当只向逻辑与/或运算符传递单个向量时,该运算符会否定该参数:
> x = c(F,T,T)
> `&`(x)
[1] TRUE FALSE FALSE
> `|`(x)
[1] TRUE FALSE FALSE
为了使逻辑运算符成为幂等操作,需要将单个元素向量作为第二个参数传递:
> `&`(x,T)
[1] FALSE TRUE TRUE
> `|`(x,F)
[1] FALSE TRUE TRUE
当只有一个参数传递时,为什么逻辑运算符会否定它们的参数?
当只向逻辑与/或运算符传递单个向量时,该运算符会否定该参数:
> x = c(F,T,T)
> `&`(x)
[1] TRUE FALSE FALSE
> `|`(x)
[1] TRUE FALSE FALSE
> `&`(x,T)
[1] FALSE TRUE TRUE
> `|`(x,F)
[1] FALSE TRUE TRUE
当只有一个参数传递时,为什么逻辑运算符会否定它们的参数?
这是由于R 3.2.1中的修改导致的缺陷报告。正如你所指出的,以前的行为很不合理:
(3)
。 - Mike WiseR
版本?因为在你的一元示例中,我只得到了Error in |x: 1 argument passed to '|' which requires 2
。 - lord.garbageRstudio
版本问题。当前的R
版本是3.x.x
的主版本。 - lord.garbagex86_64, darwin13.4.0
的 OSX 上使用的是R version 3.1.2 (2014-10-31)
。 - Mert NuhogluR 3.1.2
版本,这意味着 PR#16385 可能已经被应用了。这个补丁修复了这个问题。很奇怪你仍然遇到这个问题。 - lord.garbage