[Rd] 1.4.0: mean/sum of logicals
Peter Dalgaard BSA
p.dalgaard@biostat.ku.dk
05 Oct 2001 13:44:51 +0200
Torsten Hothorn <Torsten.Hothorn@rzmail.uni-erlangen.de> writes:
> the NEWS file in 1.4.0-devel states:
>
> o mean() has `data frame' method applying mean column-by-column.
> When applied to non-numeric data mean() now returns NA rather
> than a confusing error message (for compatibility with S4).
>
>
> which means:
>
> R> mean(c(TRUE, FALSE))
> [1] NA
> Warning message:
> argument is not numeric: returning NA in: mean.default(c(TRUE, FALSE))
>
> but:
>
> R> sum(c(TRUE, FALSE))
> [1] 1
>
> ?sum states:
>
> sum(..., na.rm=FALSE)
>
> Arguments:
>
> ...: numeric vectors.
>
> and clearly
>
> R> is.numeric(c(TRUE, FALSE))
> [1] FALSE
>
>
> this is confusing, isn't it? I think that `sum' and `mean' should take the
> same arguments (and one probably will not allow to sum up logicals) or am
> I missing something?
>
> Torsten
Hmm. That slipped in without me noticing. Summing logicals is a fairly
common practice, as in
sem <- sd(x,na.rm=TRUE)/sqrt(sum(!is.na(x)))
Taking means of logicals is somewhat more rare, but it does work in
Splus 6.0 and it is a general rule coerce to logicals to 0/1, so I
suspect that this is just an oversight and we want mean.default to
start with
if (!is.numeric(x) && !is.complex(x) && !is.logical(x)) {
warning("argument is not numeric: returning NA")
return(as.numeric(NA))
If Brian really meant otherwise, he'll explain why when he gets back
from Switzerland...
--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._