As a disclaimer, I cannot say that this is why sum() was designed as it was.
0 is the sum of a set with no elements, the empty set {}. When na.rm=TRUE, NA values are removed. When the only values are NA (as in your example c(NA, NA) ), and you remove them all, you are taking the sum of no elements, which is 0. Also note the behavior of sum() # returns 0 sum is one of the few functions that you can simply call that will not return an error. HTH, Josh On Tue, Apr 20, 2010 at 9:42 AM, <will.ea...@gmx.net> wrote: > Dear all, > > just a stupid R question, since the results puzzle me a bit: > >> sum(c(NA,NA), na.rm=TRUE) > [1] 0 >> NA + NA > [1] NA >> NA + 1 > [1] NA >> > > Why does sum(c(NA,NA), na.rm=TRUE) return 0 and not NA? > > Thanks in advance, > > Will > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > -- Joshua Wiley Senior in Psychology University of California, Riverside http://www.joshuawiley.com/ ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.