2011-06-17 91 views
1

我有一個像df_all這樣的列表(見下文)。R:結合感興趣的列表

A = matrix(ceiling(10*runif(8)), nrow=4) 
colnames(A) = c("country", "year_var") 
dfa = data.frame(A)      

df1 = dfa[1,]                 
df2 = dfa[2,]                 
df3 = dfa[3,]                 
df4 = dfa[4,]                 
df_all = list(df1, df2, df3, df4)            
df_all 

現在我想通過使用變量a來組合興趣列表。

a <- "2,3,4" 
b <- strsplit(a, ",")[[1]] 

要結合這個名單,我用的是folling循環:

for (i in 1:length(b)){ 
c<-b[i] 
aa <- df_all[c:c] 
print(aa) 
} 

現在的問題是,我怎麼能結合這個結果和這個保存爲可變?

謝謝!

回答

3

這會爲你工作:

basnum<-as.integer(b) 
do.call(rbind, df_all[basnum]) 

通過df_all[basnum],創建只有相關data.frames列表。

do.call將一個函數和一個列表作爲參數(現在有更多但不相關)。然後列表中的項目作爲參數傳遞給函數。

因此,在這種情況下,上面是等效於調用:

rbind(df_all[[2]], df_all[[3]], df_all[[4]]) 

而這會產生一個data.frame持有所有感興趣的行。

+0

感謝您的解決方案。第一個解決方案對我來說非常有用。 =) – Lisann 2011-06-17 08:00:24