2017-05-03 55 views
-3

我想學習R編程,我需要一些幫助。我正在嘗試獲取用戶輸入,並檢查數字是偶數還是奇數。來自用戶交互式代碼的意外的NA

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

但我發現了一個錯誤信息:

錯誤消息: [1] 「NA是事件」

  1. 爲什麼沒有把它提示用戶輸入號碼?
  2. 「NA是事件」是什麼意思?
+1

1)你有你的第二行一個拼寫錯誤會發生什麼;將'userinput'改爲'user_input'(或者讓它們保持一致) 2.)當我以交互方式運行第一行時,它會提示輸入一個數字 - 但是如果你立即交互運行整個事件,它不會等待你並將NA分配給user_input。您需要詳細瞭解如何使用'readline'函數。當您以交互方式運行它們時,很多從命令提示符運行良好的東西不能很好地運行(沒有修改)。 3.)「是事件」部分是你寫的。 – HFBrowning

+1

@HFBrowning,你應該提出這個答案。順便說一句,你只是打敗了我:) – Drj

+0

我只是在學習:)。感謝您的意見:) – Damien

回答

0

?readline

readline的讀取來自終端的線(在交互使用)。

所以,當你運行你的代碼會發生什麼:

user_input = suppressWarnings(as.integer(readline(prompt="Enter a number: "))) 

readline立即打印提示,但然後讀取你的腳本

if ((user_input %% 2) == 0) 

的下一行,就好像它是用戶的輸入。這意味着if未被評估,並且下一條語句

print(paste(user_input,"is Event")) 

立即執行。由於user_inputNA什麼打印是NA is Event

你可以看到,這是如果你改變你的腳本

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

感謝您提供清晰詳細的解釋。你太棒了 :) – Damien