我有一系列数据短数据集(2-6个,9个)(dat1,dat2,dat3 ... dat1000),它们都具有相同的结构,我试图按名称按升序将它们放在一起带有rbind的单个数据框架。以下是我正在使用的内容以及我要创建的内容的一小部分示例。
#create sample data sets
set.seed(1)
dat1 = data.frame( A = (1:2),B = rnorm(2, mean = 0.03,sd = 0.01))
dat2 = data.frame( A = (1:3),B = rnorm(3, mean = 0.05,sd = 0.01))
dat3 = data.frame( A = (1:4),B = rnorm(4, mean = 0.05,sd = 0.01))
dat4 = data.frame( A = (1:8),B = rnorm(8, mean = 0.05,sd = 0.01))
#put them into a single data frame, this is an example of the data frame I would like to end up with
rbind(dat1,dat2,dat3,dat4)
我的问题是如何将数据帧与循环或计数设备绑定在一起,这样我就不必写出rbind中的每个变量(dat1,dat2 ... dat1000)。
答案 0 :(得分:3)
这是另一种选择。使用示例中的数据
> do.call(rbind, lapply(paste("dat", 1:4, sep=""), get))
A B
1 1 0.02373546
2 2 0.03183643
3 1 0.04164371
4 2 0.06595281
5 3 0.05329508
6 1 0.04179532
7 2 0.05487429
8 3 0.05738325
9 4 0.05575781
10 1 0.04694612
11 2 0.06511781
12 3 0.05389843
13 4 0.04378759
14 5 0.02785300
15 6 0.06124931
16 7 0.04955066
17 8 0.04983810
完整案例使用:
do.call(rbind, lapply(paste("dat", 1:1000, sep=""), get))
答案 1 :(得分:2)
使用data.table::rbindlist
。
它需要您的每个数据集都是data.table,以及列表中的元素。以下示例应该有所帮助。
例如
DT1 = data.table(A=1:3,B=letters[1:3])
DT2 = data.table(A=4:5,B=letters[4:5])
l = list(DT1,DT2)
rbindlist(l)