如何解决需要TRUE/FALSE的错误值


delaylevel <- c()
delaysort <- function(delaycol){
for (x in delaycol){
if (x > 60){
append(delaylevel, 3)
}else if (x > 30){
append(delaylevel, 2)
}else if (x > 15){
append(delaylevel, 1)
}else{
append(delaylevel, 0)
}
}
}
sapply(flights$ARRIVAL_DELAY, delaysort)

flights$ARRIVAL_DELAY是数据帧(向量)中的一列。我能够单独应用每个元素以获得TRUE或FALSE,但它不适用于此函数。应该做些什么来让这个功能发挥作用?

抛开效率不谈…您需要在使用append()之后进行赋值,然后返回函数的结果:

delaysort <- function(delaycol){
delaylevel <- c()
for (x in delaycol){
if (x > 60){
delaylevel = append(delaylevel, 3)
}else if (x > 30){
delaylevel = append(delaylevel, 2)
}else if (x > 15){
delaylevel = append(delaylevel, 1)
}else{
delaylevel = append(delaylevel, 0)
}
}
return(delaylevel)
}
sapply(1:70, delaysort)
# [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3

更快速的R'ish应该使用cut或类似的:

delaysort <- function(delaycol) as.integer(cut(1:70, c(0, 15, 30, 60, Inf))) - 1
delaysort(delaycol)
# [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3

最新更新