将用户输入转换为数字

时间:2014-09-26 19:51:04

标签: r if-statement

这可能是一个愚蠢的错误,但我无法弄明白。 这是样本:

 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: ")

1 个答案:

答案 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功能检查此内容。