# [R] differing behavior of mean(), median() and sd() with na.rm

Marc Schwartz m@rc_@chw@rtz @end|ng |rom me@com
Wed Aug 22 17:24:52 CEST 2018

```Hi,

It might even be worthwhile to review this recent thread on R-Devel:

https://stat.ethz.ch/pipermail/r-devel/2018-July/076377.html

which touches upon a subtly related topic vis-a-vis NaN handling.

Regards,

Marc Schwartz

> On Aug 22, 2018, at 10:55 AM, Bert Gunter <bgunter.4567 using gmail.com> wrote:
>
> ... And FWIW (not much, I agree), note that if z = numeric(0) and sum(z) =
> 0, then mean(z) = NaN makes sense, as length(z) = 0, so dividing by 0 gives
> NaN. So you can see the sorts of issues you may need to consider.
>
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along and
> sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
>
> On Wed, Aug 22, 2018 at 7:47 AM Bert Gunter <bgunter.4567 using gmail.com> wrote:
>
>> Actually, the dissonance is a bit more basic.
>>
>> After xxx(...., na.rm=TRUE) with all NA's in ... you have numeric(0). So
>> what you see is actually:
>>
>>> z <- numeric(0)
>>> mean(z)
>> [1] NaN
>>> median(z)
>> [1] NA
>>> sd(z)
>> [1] NA
>>> sum(z)
>> [1] 0
>> etc.
>>
>> I imagine that there may be more of these little inconsistencies due to
>> the organic way R evolved over time. What the conventions should be  can be
>> purely a matter of personal opinion in the absence of accepted standards.
>> But I would look to see what accepted standards were, if any, first.
>>
>> -- Bert
>>
>>
>> On Wed, Aug 22, 2018 at 7:34 AM Ivan Calandra <calandra using rgzm.de> wrote:
>>
>>> Dear useRs,
>>>
>>> I have just noticed that when input is only NA with na.rm=TRUE, mean()
>>> results in NaN, whereas median() and sd() produce NA. Shouldn't it all
>>> be the same? I think NA makes more sense than NaN in that case.
>>>
>>> x <- c(NA, NA, NA) mean(x, na.rm=TRUE) [1] NaN median(x, na.rm=TRUE) [1]
>>> NAsd(x, na.rm=TRUE) [1] NA
>>>
>>> Thanks for any feedback.
>>>
>>> Best,
>>> Ivan
>>>
>>> --
>>> Dr. Ivan Calandra
>>> TraCEr, laboratory for Traceology and Controlled Experiments
>>> MONREPOS Archaeological Research Centre and
>>> Museum for Human Behavioural Evolution
>>> Schloss Monrepos
>>> 56567 Neuwied, Germany
>>> +49 (0) 2631 9772-243
>>> https://www.researchgate.net/profile/Ivan_Calandra
>>>
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help