if(num< 0){:缺少值需要TRUE / FALSE时出错

时间:2018-06-13 20:40:53

标签: r if-statement boolean na missing-data

y <- as.integer(readline(prompt ="Enter a number: "))
factorial = 1
 if (y< 0){
    print("Error")
 } else if (y== 0) 
 {
     print("1")
 } else
 { 
     for(i in 1:y)  {
            factorial = factorial * i
                    }
      return(factorial)
  }

想知道为什么这样做:

  

if(y&lt; 0){:缺少值需要TRUE / FALSE

时出错

是否导致第一​​行的数据类型为NA_integer

1 个答案:

答案 0 :(得分:2)

有三种方法可以将值传递给if语句。

y <- 1
if (y > 0) print("more")

这个按预期工作。

y <- 1:3
if (y > 0) print("ignores all but 1st element")

正如警告信息告诉您的那样,只有第一个元素用于评估它。您可以使用anyall来做到这一点。

y <- NA
if (y > 0) print("your error")

这种情况实际上会给你错误。我敢打赌,y不知何故NA。如果您需要更多帮助,您可能需要提供可重现的示例(包含数据和整个shebang)。另请注意,它有助于直观地构建代码以提高可读性。