为什么&和&&& R运算符在长度一向量比较中给出不同的结果?

时间:2018-08-10 21:07:55

标签: r

对于长度一的向量比较,&和&&应该给出相同的结果。比较长度为1的逻辑向量和长度为0的逻辑向量时,它们得出的结果如何呢?

# using &
FALSE & logical(0)
> logical(0)

# using &&
FALSE && logical(0)
> FALSE

1 个答案:

答案 0 :(得分:2)

从这些运算符的R文档(例如help("&"))中,我们有了元素运算符:

  

对于“ |”,“&”和“ xor”,为逻辑或原始向量。如果涉及        零长度向量,结果的长度为零。

这说明了为什么FALSE & logical(0)返回logical(0)的原因。

对于&&,它将始终返回长度为1的逻辑向量。

  

对于'||','&&'和'isTRUE',这是一个长度为1的逻辑向量。

结果为False,因为发生短路。同样来自文档:

  

“ NA”是有效的逻辑对象。其中“ x”或“ y”的分量        为“不适用”,如果结果不明确,则结果为“不适用”。在        换句话说,“ NA&TRUE”的计算结果为“ NA”,但“ NA&FALSE”        评估为“ FALSE”。请参见下面的示例。

这说明了为什么FALSE && logical(0)FALSETRUE && logical(0)NA