我在R中有一个我不明白的行为。也许有一个合乎逻辑的答案。如果我对逻辑值(或具有逻辑值的向量)求和,我得到一个整数(或带整数的向量)。但是如果我使用!
(NOT)求和的第一个值,我得到逻辑数据类型。
> TRUE + TRUE
[1] 2
> !TRUE + !TRUE
[1] FALSE
> FALSE + FALSE
[1] 0
> !TRUE + TRUE
[1] FALSE
> TRUE + !TRUE
[1] 1
这种行为有原因吗? 谢谢你的帮助。
答案 0 :(得分:2)
查看运算符优先级(?Syntax
)。
在否定之前进行添加,因此您可以对添加结果进行逻辑否定。
我唯一不确定订单的情况是!TRUE + !TRUE
,我假设首先评估RHS(右手边),使其成为!TRUE + FALSE
,而!1
成为{{1} }(1 + 0,请注意这里强制为整数),因此最后给出FALSE
。
related answer of myself关于运算符优先级。