[R] different interface to by (tapply)?

Erik Iverson eriki at ccbr.umn.edu
Mon Aug 30 16:52:34 CEST 2010


I can definitely recommend the "plyr" package for these sorts of
operations.

http://had.co.nz/plyr/

ivo welch wrote:
> dear R experts:
> 
> has someone written a function that returns the results of by() as a
> data frame?   of course, this can work only if the output of the
> function that is an argument to by() is a numerical vector.
> presumably, what is now names(byobject) would become a column in the
> data frame, and the by object's list elements would become columns.
> it's a little bit like flattening the by() output object (so that the
> name of the list item and its contents become the same row), and
> having the right names for the columns.  I don't know how to do this
> quickly in the R way.  (Doing it slowly, e.g., with a for loop over
> the list of vectors, is easy, but would not make a nice function for
> me to use often.)
> 
> for example, lets say my by() output is currently
> 
> by( indf, indf$charid, function(x) c(m=mean(x), s=sd(x)) )
> 
> $`A`
> [1] 2 3
> $`B`
> [2] 4 5
> 
> then the revised by() would instead produce
> 
> charid  m  s
> A          2  3
> B          4  5
> 
> working with data frames is often more intuitive than working with the
> output of by().  the R wizards are probably chuckling now about how
> easy this is...
> 
> regards,
> 
> /iaw
> 
> ----
> Ivo Welch (ivo.welch at brown.edu, ivo.welch at gmail.com)
> 
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list