查找符合某些条件的矩阵行

时间:2014-07-11 16:46:44

标签: r

我想找到包含给定列值的行。第一个()返回预期的3行数,但是最后一个语句只返回1而不是1 2 4,如我所料。

这个例子说明了。

> x <- matrix(c(1,0,NA,1,1,1,0,1,0,1,1,NA),nrow=4,ncol=3)
> x
     [,1] [,2] [,3]
[1,]    1    1    0
[2,]    0    1    1
[3,]   NA    0    1
[4,]    1    1   NA
> which(!is.na(x[,1]))
[1] 1 2 4
> which(!is.na(x[,1]) && x[,2]==1)
[1] 1

1 个答案:

答案 0 :(得分:0)

您需要使用&运算符,而不是&&运算符。

来自&&的帮助页面:

  

&安培;和&amp;&amp;表示逻辑AND和|和||表示逻辑OR。该   较短的形式执行元素比较与大致相同   算术运算符。较长的表单从左到右进行评估   仅检查每个向量的第一个元素。评估进行   直到确定结果。较长的形式是合适的   用于编程控制流程,通常在if子句中使用。

如果您对其他编程语言有经验,我会同情这是令人困惑的,因为&通常表示按位AND和&&逻辑AND