对于长度一的向量比较,&和&&应该给出相同的结果。比较长度为1的逻辑向量和长度为0的逻辑向量时,它们得出的结果如何呢?
# using &
FALSE & logical(0)
> logical(0)
# using &&
FALSE && logical(0)
> FALSE
答案 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)
是FALSE
而TRUE && logical(0)
是NA