On Thu, 4 Feb 2010 12:04:32 +0100 Karl Ove Hufthammer <k...@huftis.org> 
wrote:
> It's not exactly a bug, since 'median' is not documented to work on data 
> frames (use 'sapply' or 'apply' for that),

Note that this is slightly more complicated than what would appear at 
first sight. Both 'sapply' and 'apply' work fine on the original 
example,

mat <- matrix(1:16, 4,4)
df1 <- data.frame(mat)

but not if we change the class of one of the variables/columns:

df1[,2]=as.Date(df1[,2], origin="2000-01-02")

Here 'sapply(df1,median)' returns a numeric vector, not a data frame,

> sapply(df1,median)
     X1      X2      X3      X4 
    2.5 10964.5    10.5    14.5 

so the second 'median' value is a number, not a date. And
'apply(df1,2,median)' returns an ugly and confusing error message.

Here's my proposed 'median for data frames', which should work fine 
everywhere that 'median' does:

median.data.frame=function(df, ...)
{
  res = df[1,]
  for(i in seq_along(df))
    res[1,i] = median(df[,i], ...)
  res
}

-- 
Karl Ove Hufthammer

______________________________________________
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.

Reply via email to