问题
Why does the first line return TRUE, and the third line returns 1? I would expect both lines to return 1. What is the exact meaning of those extra two parentheses in the third line?
!is.na(5) + !is.na(NA)
# TRUE
(!is.na(5)) + (!is.na(NA))
# 1
edit: should check these multiple times. The original problem was with !is.na()
, thought it replicated for is.na()
. But it didn't :)
回答1:
! has a weird, counter-intuitive precedence in R.
Your first code is equivalent to
!(is.na(5) + !is.na(NA))
That is, !
has lower precedence than +
.
来源:https://stackoverflow.com/questions/17651687/behavior-of-summing-is-na-results