2015-06-20 14 views
6

當只通過一個單個載體到邏輯和/或操作者,操作者否定的論點:當R中只有一個參數時,爲什麼邏輯運算符否定它們的參數?

> 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 

爲什麼邏輯運算符否定他們的說法時,只有一個參數傳遞?

+0

你可能會認爲「無效的一元運算符」將是一個更恰當的反應,那是什麼''*'(3)'確實爲例。 –

+2

你使用了什麼'R'版本?因爲我只在'|'中傳遞| x:1參數中的錯誤在你的一元例子中需要2'。 –

+0

「作品」(如我得到這種奇怪的否定行爲)對我來說,我正在使用版本0.98.1103 –

回答

7

was modified in R 3.2.1作爲a bug report的結果。正如您所指出的那樣,以前的行爲沒有什麼意義:

enter image description here

+0

奇怪的是,這些對我都有效。 – 2015-06-20 09:00:02

+0

@Pascal這是<3.2.1的行爲。在當前的R版本中,您應該會收到上述評論中提到的錯誤:http://stackoverflow.com/questions/30951729/why-do-logical-operators-negate-their-argument-when-there-is-only- one-argument-i/30951871?noredirect = 1#comment49937120_30951729 – Thomas

+0

啊是的,我誤讀了。所以一切都很好。 – 2015-06-20 09:30:27

相關問題