[R] Applying rbind() to a sequence of data frame names

jim holtman jholtman at gmail.com
Tue Apr 1 18:22:32 CEST 2008


Will this do it for you:

>  ds1 <- data.frame(x=c(1,2,3,4), y=c(5,6,7,8))
>  ds2 <- data.frame(x=c(9,10,11,12), y=c(13,14,15,16))
>  ds3 <- data.frame(x=c(1,2,3,4), y=c(5,6,7,8))
>  ds4 <- data.frame(x=c(9,10,11,12), y=c(13,14,15,16))
> x.n <- c('ds1','ds2','ds3','ds4')
>
> # create a list of data frames
> x.list <- lapply(x.n, get)
>
> # combine into a single dataframe
> do.call(rbind, x.list)
    x  y
1   1  5
2   2  6
3   3  7
4   4  8
5   9 13
6  10 14
7  11 15
8  12 16
9   1  5
10  2  6
11  3  7
12  4  8
13  9 13
14 10 14
15 11 15
16 12 16
>


On 4/1/08, Hans W. Borchers <hwborchers at gmail.com> wrote:
> I have a set of data frames ds1, ds2, ... each having the same columns
> and column names:
>
>  ds1 <- data.frame(x=c(1,2,3,4), y=c(5,6,7,8))
>  ds1 <- data.frame(x=c(9,10,11,12), y=c(13,14,15,16))
>  ...
>
> and I would like to combine them into just one data frame like
>
>  ds <- rbind(ds1, ds2, ...)
>
> Because there are so many of them, I will have to use a character array
>
>  nms <- c("ds1", "ds2", ...)
>
> How can I use this character array to generate a command using rbind()
> on all of these data frames at once.
>
> I tried to apply eval() somehow, but did not come up with the right idea.
>
> Thanks
>
> ______________________________________________
> 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.
>


-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?



More information about the R-help mailing list