如果条件未找到匹配项,则返回值which()

时间:2014-12-05 09:09:07

标签: r

说,我有一个数据框如下

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 个答案:

答案 0 :(得分:3)

与建议一样,您必须检查length的{​​{1}}输出:

which

更合适的工具是if (length(which(mydata[,1] == 1 & mydata[,2] == i)) > 0)

any

我还建议删除两组最里面的括号,因为if (any(mydata[,1] == 1 & mydata[,2] == i)) 运算符的优先级高于==(请参阅&)。