2016-02-14 20 views
9

Tôi có hơn 50 dữ liệu. Khung trong môi trường làm việc của mình mà tôi muốn rbind. Có cách nào để rbind các dữ liệu .frames mà không cần phải nhập từng số ngày.frame?Làm thế nào để rbind tất cả các data.frames trong môi trường làm việc của bạn?

Ví dụ về những gì tôi đã và đang làm:

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

Tôi đã thử:

df <- rbind(ls()) 

Nhưng điều này chỉ tạo ra một danh sách các tên của tất cả các data.frames trong môi trường làm việc của tôi.

Trả lời

12

Bạn có thể tìm kiếm các đối tượng thuộc lớp data.frame và sử dụng chức năng mget để truy xuất chúng.

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

Tôi với bạn cho đến khi phần 'do.call' cuối cùng tôi nhận được thông báo lỗi' Lỗi: giá trị cho ‘x1’ không tìm thấy'. Bất kỳ đề xuất? –

+0

@DavidPell; xin lỗi, tôi đã không được trên trang web. Thật khó để nói những gì đang hạnh phúc. Bạn có thể tạo một ví dụ, tương tự như những gì tôi đã làm trong câu trả lời, điều đó cho thấy vấn đề của bạn. – user2957945

Các vấn đề liên quan