2013-03-28 99 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