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
?
答案 0 :(得分:2)
有三种方法可以将值传递给if
语句。
y <- 1
if (y > 0) print("more")
这个按预期工作。
y <- 1:3
if (y > 0) print("ignores all but 1st element")
正如警告信息告诉您的那样,只有第一个元素用于评估它。您可以使用any
或all
来做到这一点。
y <- NA
if (y > 0) print("your error")
这种情况实际上会给你错误。我敢打赌,y
不知何故NA
。如果您需要更多帮助,您可能需要提供可重现的示例(包含数据和整个shebang)。另请注意,它有助于直观地构建代码以提高可读性。