[R] Named list of data.frames to data.frame with names

arun smartpink111 at yahoo.com
Tue Oct 30 19:21:05 CET 2012


Hi,
You can also try this:
 res<-do.call(rbind,lapply(l,function(x) data.frame(Name=names(l)[match.call()[[2]][[3]]],x)))
 row.names(res)<-1:nrow(res)
 head(res)
#  Name          x          y
#1    A -0.7326214 -0.8871683
#2    A  0.4761960  0.8245219
#3    A  0.2362935 -0.1427997
#4    A  1.1684286 -0.3849312
#5    A -0.5440966 -0.8001079
#6    B  0.3652238 -0.9604054
A.K.




----- Original Message -----
From: Mark Payne <markpayneatwork at gmail.com>
To: r-help at r-project.org
Cc: 
Sent: Tuesday, October 30, 2012 4:16 AM
Subject: [R] Named list of data.frames to data.frame with names

Hi,

I very frequently end up in a situation where I have a named list of
data.frames that I wish to combine. e.g.

l <- list(A=data.frame(x=rnorm(5),
y=rnorm(5)),
          B=data.frame(x=rnorm(3),y=rnorm(3)),
          C=data.frame(x=rnorm(4),y=rnorm(4)),
          D=data.frame(x=rnorm(7),y=rnorm(7)))

I would like to combine these data.frames into a single data.frame,
with the column-names. This is easy with rbind and do.call

l2 <- do.call(rbind,l)

However, I would also like l2 to contain a column containing the names
in the original list? Is there a more elegant way to do this than:

l2 <- do.call(rbind,l)
l2$name <- rep(names(l),times=sapply(l,nrow))


Mark

______________________________________________
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