[R] How to do aggregate operations with non-scalar functions

Itay Furman itayf at u.washington.edu
Thu Apr 7 07:31:05 CEST 2005



On Wed, 6 Apr 2005, Rich FitzJohn wrote:

[snip]

> ## This does the hard work of calculating the statistics over your
> ## combinations, and over the values in `p'
> y <- lapply(p, function(y)
>            tapply(df$r, list(a=a, x=x), quantile, probs=y))
>

Rich, thank you for your reply.  Gabor G has proposed a different 
solution that seem to me to be easier to maintain and scale up.
Please see my follow up to his reply.

Your solution introduced to me some R functions I was not 
familiar with: expand.grid(), colSums(), and names().  Thanks for 
that, too.

> ## Then, we need to work out what combinations of a & x are possible:
> ## these are the header columns.  aggregate() does this in a much more
> ## complicated way, which may handle more difficult cases than this
> ## (e.g. if there are lots of missing values points, or something).
> vars <- expand.grid(dimnames(y[[1]]))

In Gabor G's solution this is magically done (I think!) by 
do.call().

 	Thanks,
 	Itay

----------------------------------------------------------------
itayf at u.washington.edu  /  +1 (206) 543 9040  /  U of Washington




More information about the R-help mailing list