【问题标题】:R: How do I solve the error - missing value where TRUE/FALSE neededR:如何解决错误 - 需要 TRUE/FALSE 的缺失值
【发布时间】:2022-06-22 17:06:09
【问题描述】:
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,但是当我使用此功能时无法。

请帮忙!非常感谢:)

【问题讨论】:

  • 嗨,您的 if 语句正在创建一个整数 (0:3)。这意味着如何创建一个 TRUE/FALSE?您能否展示一些示例数据(代码格式)和您的预期输出?
  • 您需要给出导致错误的数据示例,例如 sapply(1:70, delaysort) 不会导致错误(尽管输出看起来也不正确,是NULLs

标签: r


【解决方案1】:

抛开效率不谈……你需要在使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 2015-01-17
    相关资源
    最近更新 更多