[R] list of lists to a data.frame

Marc Schwartz (via MN) mschwartz at mn.rr.com
Fri Aug 18 22:56:42 CEST 2006


On Fri, 2006-08-18 at 16:44 -0400, Rajarshi Guha wrote:
> Hi, I have a situation where I have a list of lists. Each list can
> contain elements of different types (but each one will be a scalar) say
> of double, integer or character.
> 
> However the elements of each list are always in the same order:
> 
> x <- list('a', 1, 2)
> y <- list('b', 3, 4)
> z <- list('c', 5, 6)
> 
> a <- list(x,y,z)
> 
> What I'd like to do is to convert a to a data.frame.
> 
> Currently I am doing:
> 
> b <- do.call(rbind, a)
> 
> However, when I do b[,1] I get a list returned rather than a vector of
> characters and similarly for b[,2] and so on.
> 
> I am clearly missing something, but how do I convert the list of lists
> to a data.frame where a column is represented as a vector rather than a
> list?
> 
> Thanks,

How about:

> as.data.frame(sapply(a, rbind))
  V1 V2 V3
1  a  b  c
2  1  3  5
3  2  4  6

or:

> as.data.frame(t(sapply(a, rbind)))
  V1 V2 V3
1  a  1  2
2  b  3  4
3  c  5  6


depending upon how you wanted the columns versus rows to be structured.

HTH,

Marc Schwartz



More information about the R-help mailing list