我想找到包含给定列值的行。第一个()返回预期的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
答案 0 :(得分:0)
您需要使用&
运算符,而不是&&
运算符。
来自&&
的帮助页面:
&安培;和&amp;&amp;表示逻辑AND和|和||表示逻辑OR。该 较短的形式执行元素比较与大致相同 算术运算符。较长的表单从左到右进行评估 仅检查每个向量的第一个元素。评估进行 直到确定结果。较长的形式是合适的 用于编程控制流程,通常在if子句中使用。
如果您对其他编程语言有经验,我会同情这是令人困惑的,因为&
通常表示按位AND和&&
逻辑AND