R 来自用户交互代码的意外NA

R 来自用户交互代码的意外NA,r,R,我正在努力学习R编程,我需要一些帮助。我正在尝试获取用户输入,并检查该数字是偶数还是奇数 user_input = suppressWarnings(as.integer(readline(prompt="Enter a number: "))) if ((userinput %% 2) == 0) { print(paste(user_input,"is Event")) } 但我收到一条错误信息: 错误消息: [1] “不适用是事件” 为什么不提示用户输入一个数字 “NA是事件”是

我正在努力学习R编程,我需要一些帮助。我正在尝试获取用户输入,并检查该数字是偶数还是奇数

user_input = suppressWarnings(as.integer(readline(prompt="Enter a number: ")))
if ((userinput %% 2) == 0)
  {
  print(paste(user_input,"is Event"))
}
但我收到一条错误信息:

错误消息: [1] “不适用是事件”

  • 为什么不提示用户输入一个数字
  • “NA是事件”是什么意思

  • ?读线

    readline从终端读取一行(在交互使用中)

    那么,当您运行代码时会发生什么情况:

    user_input = suppressWarnings(as.integer(readline(prompt="Enter a number: ")))
    
    是不是
    readline
    立即打印提示,然后读取脚本的下一行

     if ((user_input %% 2) == 0)
    
    好像这是用户的输入。这意味着如果未计算
    ,则执行
    ,然后执行下一条语句

    print(paste(user_input,"is Event"))
    
    马上执行。由于
    user\u输入
    NA
    打印的是
    NA是事件

    您可以看到,如果将脚本更改为

    user_input = suppressWarnings(as.integer(readline(prompt="Enter a number: ")))
    2
    if ((user_input %% 2) == 0)
    {
      paste(user_input,"is Event")
    }
    

    1)你的第二行有输入错误;将
    userinput
    更改为
    user_input
    (或使它们一致)2。)当我以交互方式运行第一行时,它会提示输入一个数字-但是如果您同时以交互方式运行整个过程,它不会等待您,并会将NA分配给用户_input。您需要阅读更多关于如何使用
    readline
    函数的信息。许多在命令提示符下运行良好的东西在以交互方式运行时运行不好(无需修改)。3.“是事件”部分就是你写的。@HFBrowning,你应该提出这个作为答案。顺便说一句,你刚刚击败我:)我只是在学习:)。谢谢你的评论:)谢谢你清晰详细的解释。你太棒了:)