2013-03-28 86 views
0

合并多个dataframes我有多个相同dataframes:X1,X2,...,X32For循环并粘贴()中的R

例如一个数据帧的:

> X1 
    value 
1 3300320 

我想有中庸之道一个数据帧这样的:

> XTotal 
    value X 
1 3300320 1 
2 345098 2 
... 
32 34355 32 

我有试过循环和粘贴(“X”,我09月=“”),rbind等,但每次我得到的字符串列表这样的时间:

> listDF 
1 "X1" 
2 "X2" 
... 
32 "X32" 

所以,我无法正常通话的每个数据帧来实现其价值的XTotal数据帧...

我有点失落,任何想法?

在此先感谢!

回答

1

永远不要在一个循环中增长一个对象。这是非常低效的,因为它会每次复制整个对象。

创建data.frames使用getlapplymget

dflist <- mget(paste('X', 1:32), envir = parent.frame()) 
# also valid 
# dflist <- lapply(paste('X', 1:32), get) 

# to combine them 
DFlist <- do.call('rbind', dflist) 


# or, faster 
library(data.table) 
DFlist <- rbindlist(dflist) 

如果data.frames不具有相同的列/列的顺序使用rbind.fillplyr

library(plyr) 
DFlist <- rbind.fill(dflist) 
列表

确实没有任何需要创建dflist明确

以下任何一种也可以工作

rbind.fill(mget(paste('X', 1:32), envir = parent.frame())) 
rbindlist(mget(paste('X', 1:32), envir = parent.frame())) 
do.call(rbind, mget(paste('X', 1:32), envir = parent.frame())) 
+0

太棒了!非常感谢!我不知道这个mget功能。 – lojacobs 2013-03-28 13:19:43