我在 R 中有一种我不明白的行为。也许对此有一个合乎逻辑的答案。如果我对逻辑值(或具有逻辑值的向量)求和,我会得到一个整数(或具有整数的向量)。但是,如果我使用 !
(非)作为求和的第一个值,我会得到逻辑数据类型。
> TRUE + TRUE
[1] 2
> !TRUE + !TRUE
[1] FALSE
> FALSE + FALSE
[1] 0
> !TRUE + TRUE
[1] FALSE
> TRUE + !TRUE
[1] 1
这种行为有原因吗? 感谢您的帮助。
最佳答案
查看运算符优先级(?Syntax
)。
加法是在求反之前进行的,因此您会得到加法结果的逻辑否定。
我不确定顺序的唯一情况是 !TRUE + !TRUE
,我假设首先评估 RHS(右手侧),因此它变为 !TRUE + FALSE
又变成 !1
(1+0,注意此处强制转换为整数),因此它在末尾给出 FALSE
。
related answer of myself关于运算符优先级。
关于R 逻辑值相加的结果取决于第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35500986/