2014-12-05 57 views
1

說的,我有一個數據幀如下返回值(),如果病情沒有找到匹配

1 2 
1 4 
1 6 
1 7 
1 9 

雖然從1:10運行一個循環,我只想檢索這些數字哪在上表中與1一起存在,即2,4,6,7,9。這是我的代碼使用哪種條件,但是,我得到一個錯誤,說:「錯誤在if:參數的長度爲零」。我也嘗試了== TRUE而不是> 0,並且仍然得到相同的錯誤。

for(i in 1:10) 
{ 
if(which((mydata[,1] == 1) & (mydata[,2] == i)) > 0) 
{ 
    print("yes"); 
} 
else 
{ 
    print("no") 
} 
} 
+1

不匹配'which'返回_length_零向量不是零;我想它應該是'if(length(which(..))> 0)...' – 2014-12-05 09:32:45

+0

@alexis_laz,作品,謝謝。 你可以添加評論作爲答案,所以我可以upvote? – IAMTubby 2014-12-05 10:09:01

回答

3

一樣的建議,你就必須檢查which的輸出length

if (length(which(mydata[,1] == 1 & mydata[,2] == i)) > 0) 

這方面的一個更合適的工具是any

if (any(mydata[,1] == 1 & mydata[,2] == i)) 

我也建議刪除由於==運算符具有比&更高的優先級,所以這兩組最內括號(請參見?Syntax)。