2016-05-14 46 views
1

我有相同的列的一系列數據幀:使用字符串列表訪問數據幀的變量R中

d1 <- data.frame('a' = c(1,2), 'b' = c('x','y')) 
d2 <- data.frame('a' = c(3,4), 'b' = c('z','m')) 
d3 <- data.frame('a' = c(5,6), 'b' = c('n','o')) 

我想將它們粘合在一起。一種方法是通過這樣做:

do.call("rbind", list(d1, d2, d3)) # this works 

但是,當你有很多數據幀時,這是低效的。我可以創建生成的數據幀的名字字符串:

df.name <- rep(paste0('d',c(1:3))) # creates a list 'd1','d2','d3' 
do.call("rbind", list(df.name)) # rbinds 'd1','d2','d3' as strings 

然而,當你做到這一點結合「D1」,「D2」,「D3」爲字符串。我需要做什麼R會將列表值作爲表示數據幀的變量處理?

+2

見'?mget'和'?ls' –

回答

2

我們可以使用mgetpaste

library(data.table) 
rbindlist(mget(paste0("d", 1:3))) 

如果有很多對象,並具有相同的模式,即 「d」,其次是一些數字,用ls

rbindlist(mget(ls(pattern="d\\d+")))