2016-02-14 8 views
9

У меня более 50 data.frames в моей рабочей среде, что я хотел бы rbind. Есть ли способ до rbinddata.frames с отсутствием необходимости набирать каждый date.frame?Как перенести все data.frames в рабочую среду?

Пример того, что я делал:

df <- rbind(A, B, C, D, E, F) 

Я попытался:

df <- rbind(ls()) 

Но это только создает список имен всех data.frames в моей рабочей среде.

ответ

12

Вы можете найти объекты класса data.frame и использовать функцию mget для их извлечения.

a = b = c = data.frame(x=1:2, y=3, z=1:4) 
d = "junk" 
e = list(poo="pah") 
ls() 
# [1] "a" "b" "c" "d" "e" 
dfs = sapply(.GlobalEnv, is.data.frame) 
dfs 
# a  b  c  d  e 
# TRUE TRUE TRUE FALSE FALSE 
do.call(rbind, mget(names(dfs)[dfs])) 
#  x y z 
# a.1 1 3 1 
# a.2 2 3 2 
# a.3 1 3 3 
# a.4 2 3 4 
# b.1 1 3 1 
# b.2 2 3 2 
# b.3 1 3 3 
# b.4 2 3 4 
# c.1 1 3 1 
# c.2 2 3 2 
# c.3 1 3 3 
# c.4 2 3 4 
+0

Я с вами до последней части 'do.call', после чего получаю сообщение об ошибке' Error: value for 'x1' not found'. Какие-либо предложения? –

+0

@ DavidPell; извинения, я не был на месте. Трудно сказать, что происходит. Можете ли вы создать пример, похожий на то, что я сделал в ответ, который показывает вашу проблему. – user2957945

 Смежные вопросы

  • Нет связанных вопросов^_^