这可能是一个愚蠢的错误,但我无法弄明白。 这是样本:
if(K<=50 & k<=K) {
cat("Message A", "\n")
} else {
if(K>50) {
cat("Error A","\n")
return(0)
} else {
cat("Error B","\n")
return(0)
}
}
如果我输入K = 9且k = 2,我仍然会得到错误A并且程序停止。 为什么呢?
编辑: 如果我接受K和k的用户输入,它会给出“错误A”消息。 “错误B”工作正常。我永远不会得到“消息A”
K<-readline("Enter K: ")
k<-readline("Enter k: ")
答案 0 :(得分:1)
您看到此错误的原因是readline
函数返回的是字符串而不是数字。当R比较字符串和数字时,它会将两者都转换为字符串并按字母顺序进行比较:
"9" <= 50
# [1] FALSE
"1" <= 50
# [1] TRUE
解决方案是将输入的值转换为数字类型:
K <- as.numeric(readline("Enter K: "))
k <- as.numeric(readline("Enter k: "))
请注意,如果您输入的内容不是数字,则R会将该值存储为NA
;您可以使用is.na
功能检查此内容。