R 逻辑值相加的结果取决于第一个值

标签 r logical-operators

我在 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/

相关文章:

unix - '-a' 在 Unix Shell 脚本中做什么

r - 您可以 "tie"或提供 R 中 data.frame 的替代实现吗?

C - if-else 语句的不合理结果

r - ggplot 0.9.0 中 scale_datetime() 的适当时区参数语法是什么

r - 如何避免在 R 中重新计算数据

javascript - JavaScript 中逻辑运算符的赋值运算符的简单替代?

c++ - 当重载大于运算符以比较来自不同类的两个 double 值时,出现操作数错误

php - 使用逻辑或设置变量

r - 如何在 R 中更改 corrplot 图例中标签的字体大小?

r - 在来自向量元素的字符串上的多行文本中使用粗体