r - 将否定的逻辑值加在一起时的有趣结果

标签 r

考虑

> TRUE + FALSE
[1] 1

现在,设置一种情况,使用 is.na 将某些东西评估为逻辑值。函数和否定运算符 ! :
> x = NA
> y = "not NA"

评估为 TRUEFALSE :
> !is.na(x)
[1] FALSE

> !is.na(y)
[1] TRUE

但,
> !is.na(x) + !is.na(y)
[1] FALSE

这很奇怪。添加额外的括号似乎可以解决它,但为什么会发生这种情况?
> (!is.na(x)) + (!is.na(y))
[1] 1

最佳答案

这是由于运算符优先级。见 ?Syntax +先于 ! .有两种方式

!is.na(x) + !is.na(y)

可以解释为:
`!`(`+`(is.na(x), !is.na(y)))

或者
`+`(`!`(is.na(x)), !is.na(y))

由于运算符优先级的顺序,R 以第一种方式解释表达式。将此与
!is.na(x) & !is.na(y)

这里 R 将表达式解释为
`&`(`!`(is.na(x)), !is.na(y))

!先于 & .

关于r - 将否定的逻辑值加在一起时的有趣结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27220931/

相关文章:

r - 在 R 中使用 dplyr 进行有效链接

python - 非均匀间隔时间序列的季节性分解,R 或 Python 中任何完善的算法?

r - 将信息打印到shiny-server日志中

r - roxygen 文档中的任意部分

r - 子集数据表的最快方法是什么?

r - 从 chart.TimeSeries 中的图表中获取图例 R

r - 为什么不能在 sapply 中使用 -qnorm?

r - 如何将列表的元素合并到数据框中?在 R

python - 如何让R中的keras使用Python安装的tensorflow

r - 在自定义 dplyr 函数中更改结果变量的名称