Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Behavior of summing !is.na() results

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 :)

like image 792
Xachriel Avatar asked Jul 15 '13 10:07

Xachriel


1 Answers

! 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 +.

like image 66
Konrad Rudolph Avatar answered Oct 26 '22 17:10

Konrad Rudolph