如何比较R中的布尔向量

时间:2012-11-09 09:55:50

标签: r vector comparison boolean boolean-operations

我有一个向量v,我想找到所有那些值在4到7之间的元素。     v = c(1:9)

# indices of elements with values larger than 4
which(v > 4)
# indices of elements with values smaller than 7
which(v < 7)

v>4v<7给出了布尔向量,我想将它们结合起来。我尝试了以下,这对我不起作用,......

# combination?
matching = which(v>4 && v<7)  # does not work

如何在两个布尔向量上应用布尔运算,这样可以得到一个结果向量?

1 个答案:

答案 0 :(得分:20)

使用&而非&&。 R与其他语言的不同之处在于&不是按位and,而是逻辑运算符。

&&仅评估每个向量的第一个元素:

  

'&amp;'和'&amp;&amp;'表示逻辑AND,'|'和'||'表示        逻辑或。较短的形式执行元素比较        与算术运算符的方式大致相同。更长的形式        从左到右评估只检查每个元素的第一个元素        向量。评估仅在确定结果之前进行。        较长的形式适用于编程控制流程和        通常在'if'子句中首选。

有关详细信息,请参阅?"&&"