Pascal A. Niklaus wrote: > Hi all, > > I ran into a problem in some of my code that could be traced back to 'mean' > sometimes returning NA and sometimes NaN, depending on the value of na.rm: > > >> mean(c()) >> > [1] NA > > >> mean(c(NA),na.rm=T) >> > [1] NaN > > However, I don't understand the reasoning behind this and would appreciate > and > explanation. >
note the types: typeof(c()) typeof(c(NA)) typeof(c(NA)[-na.omit(c(NA))]) now, mean(NULL) mean(logical(0)) mean(c()) # NA, because you take the mean of a vector of non-{numeric,logical} type (see the warning message) mean(c(NA), na.rm=TRUE) # NaN, because you take the mean of a zero-length logical vector mean(c(NA), na.rm=FALSE) # NA, because you take the mean of a logical vector containing an NA you can argue that ?mean underspecifies this (it doesn't say anything about the value for a zero-length logical, numeric, or complex vector, though you can guess it will be the value of 0/0). vQ ______________________________________________ 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.