14

为什么第一行返回TRUE,第三行返回1?我希望这两行都返回 1。第三行中额外的两个括号的确切含义是什么?

!is.na(5) + !is.na(NA)
# TRUE
(!is.na(5)) + (!is.na(NA))
# 1

编辑:应该多次检查这些。最初的问题是!is.na(),认为它复制了is.na()。但它没有:)

4

1 回答 1

21

!在 R 中有一个奇怪的、违反直觉的优先级。

您的第一个代码相当于

!(is.na(5) + !is.na(NA))

也就是说,!优先级低于+

于 2013-07-15T10:19:06.313 回答