On Aug 30, 2010, at 9:19 AM, 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

Doesn't by() return names for the "m" and "s" values?


then the revised by() would instead produce

charid  m  s
A          2  3
B          4  5

by shares with table and tapply the return of a list of matrix or array-like objects.

I would expect that as.data.frame would return a dataframe from such an argument, but my experience is that it generally forces this into a "long" format and one may need to resort to reshape() or reshape::melt and reshape::cast() to get it back into a rectangular format. You _could_ have created a richer example that would become the basis for further elaboration.

--
David.



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.we...@brown.edu, ivo.we...@gmail.com)

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

David Winsemius, MD
West Hartford, CT

______________________________________________
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