【发布时间】:2014-02-10 04:47:59
【问题描述】:
我读过
http://stat.ethz.ch/R-manual/R-devel/library/base/html/Logic.html
& 和 && 之间的区别没有意义。例如:
> c(1, 2, 3) & c(1,2,3)
[1] TRUE TRUE TRUE
根据链接,这是预期的行为。它正在对两个向量进行逐元素比较。
所以我再次测试...
> c(1, 2, 3) && c(1,2,3)
[1] TRUE
这也返回了预期的结果。
但是我改变了一个值......
> c(1, 2, 3) && c(1,3,3)
[1] TRUE
仍然可以预期,因为它会在第一个元素上短路。
> c(1, 2, 3) & c(1,3,3)
[1] TRUE TRUE TRUE
然而,这让我失去了。这两个向量不应该相等。
【问题讨论】:
-
你让我迷失在
c(1, 2, 3) & c(1,2,3)你能说一下你认为这是在评估什么吗? -
我从未见过
&以这种方式使用。我不认为这意味着等于,这就是==的用途。这将为您提供预期的结果:c(1, 2, 3) == c(1,3,3)。 -
用
x <- c(TRUE, FALSE)和y <- c(FALSE, TRUE)和z <- c(TRUE, TRUE)之类的东西替换你的向量,然后用x & y和x && z玩一下,看看你现在能不能弄明白 -
尽管在它周围玩耍似乎任何
!=0 都被视为TRUE,而任何== 0都被视为FALSE。所以c(1, 2, 3) & c(1,3,0)解释得更多。 -
@TylerRinker 事实上,这是一个不好的例子,可能是我一开始误解它的全部原因。
标签: r vector boolean logical-operators