2014-06-22 17 views
0

[R聲明閱讀註釋部分,然後進行以下更改後,我仍然得到一個,而不是一個「失敗」「成功」:如果使用多個參數

nrow(statedata) 
[1] 100 
num = -1 
if(num != "best" & num != "worst" & num < 1 & num > nrow(statedata)) 
    print("Failure!?") 
else <br /> 
    print("Success!") 
[1] "Success!" 
+0

謝謝,實際上它應該是num> nrow(statedata)。我在測試並更正此問題後閱讀了您的評論。這是一個更大功能的一部分,我試圖排除故障。 – codehitman

+0

請注意,'|'和'&是矢量化的。對於單個比較,您可能需要考慮'||'和'&&'。 – Jeroen

+0

@Jeroen當應用於長度> 1的向量時,'&&'和'||'靜靜地使用第一個元素。 'if'在這種情況下發出警告,所以可能使用'&'和'|'作爲首選。 –

回答

-1

找到了解決辦法:

if(num != "best" & num != "worst" & (num < 1 | num > nrow(statedata))) 

感謝所有! 乾杯。

邏輯錯誤很難找到。

+0

最好接受@ ak0053792發佈的答案,不要將其重新發布爲您自己的答案。 – Thomas

+0

但它沒有解決問題,我的答案是這樣,它是不同的。 – codehitman

2

由於條件:

if(num != "best" | num != "worst" | num < 1 | num > length(10)) 

您應該在否定中使用AND而不是OR,否則其他語句將始終爲真。我希望你在這裏明白我的觀點。

+0

啊,是的,謝謝,這是一個愚蠢的問題。 – codehitman

+1

毫無疑問,啞巴,夥伴。我之前堅持這種情況。我想你從經驗中學習。快樂學習。 – ak0053792

相關問題