为了表达如“x>0而且x<1”, “x<=0或者x>=1”之类的复合比较, 需要使用逻辑运算把两个比较连接起来。 逻辑运算符为&
, |
和!
, 分别表示“同时成立”、“两者至少其一成立”、“条件的反面”。 比如,设age<=3
表示婴儿,sex=='女'
表示女性,则 age<=3 & sex=='女'
表示女婴, age<=3 | sex=='女'
表示婴儿或妇女, !(age<=3 | sex=='女')
表示既非婴儿也非妇女。 为了确定运算的先后次序可以用圆括号()
指定。
用xor(x, y)
表示x
与y
的异或运算, 即值不相等时为真值,相等时为假值, 有缺失值参加运算时为缺失值。
逻辑向量与逻辑标量之间的逻辑运算, 两个逻辑向量之间的逻辑运算规则遵从一般R向量间运算规则。
在右运算符是缺失值时, 如果左运算符能够确定结果真假, 可以得到非缺失的结果。 例如,TRUE | NA
为TRUE
, FALSE & NA
为FALSE
。 不能确定结果时返回NA
, 比如, TRUE & NA
为NA
, FALSE | NA
为NA
。
&&
和||
分别为短路的标量逻辑与和短路的标量逻辑或, 仅对两个标量进行运算,如果有向量也仅使用第一个元素。 一般用在if语句、while语句中, 且只要第一个比较已经决定最终结果就不计算第二个比较。