Làm thế nào để lưu một data.frame trong R?


137

Tôi đã tạo một data.frame trong R không lớn lắm, nhưng phải mất khá nhiều thời gian để xây dựng. Tôi có thể lưu nó dưới dạng một tệp mà tôi có thể mở lại trong R không?

Câu trả lời:


176

Có một số cách. Một cách là sử dụng save()để lưu đối tượng chính xác. ví dụ cho khung dữ liệu foo:

save(foo,file="data.Rda")

Sau đó tải nó với:

load("data.Rda")

Bạn cũng có thể sử dụng write.table()hoặc một cái gì đó tương tự để lưu bảng dưới dạng văn bản thuần túy hoặc dput()để lấy mã R để tạo lại bảng.


2
Ngoài ra còn có dumpvà các tệp được tạo sẽ được source()-ed, mặc dù help(dump)trang nói savelà "an toàn hơn".
IRTFM

4
Tôi luôn thích lưu trữ dữ liệu trong văn bản thuần túy, vì vậy tôi thích dump()hơn save()write.table()hơndump()
Sacha Epskamp

Tôi có đúng không mà write.table sẽ không bảo vệ những thứ như đã thiết lập một cột 0 và 1 như một yếu tố, nhưng điều đó save()/ load()sẽ? Nếu vậy, đó là một cái gì đó để xem xét là tốt. Tôi thường có một phần xử lý một số tệp .csv và một khi tôi nhận được chúng ở nơi tôi thích, tôi muốn lưu chúng để tôi không phải chạy lại mã đó mỗi khi tôi truy cập lại dự án của mình. Vì vậy, bảo tồn công việc / tinh chỉnh cho cấu trúc là điều quan trọng cần xem xét.
Hendy

4
Đúng. dump()cũng tiết kiệm cấu trúc. Điều thú vị write.tablelà nó viết các bảng theo cách mà nhiều phần mềm có thể nhập.
Sacha Epskamp

2
Điều này tiết kiệm hơn là chỉ các khung dữ liệu. Xem saveRDSđể lưu một khung dữ liệu mà không có tên của nó (dhendrickson có câu trả lời về điều đó).
PatrickT

91

Nếu bạn chỉ lưu một đối tượng (khung dữ liệu của bạn), bạn cũng có thể sử dụng saveRDS.
Để tiết kiệm:

saveRDS(foo, file="data.Rda")

Sau đó đọc nó với:

bar <- readRDS(file="data.Rda")

Sự khác biệt giữa saveRDSsavelà trước đây chỉ có một đối tượng có thể được lưu và tên của đối tượng không bị buộc phải giống nhau sau khi bạn tải nó.


1

Giả sử bạn có một khung dữ liệu bạn đã tạo và đặt tên là "DataDefput", bạn chỉ cần xuất nó vào cùng thư mục bằng cách sử dụng cú pháp sau.

write.csv (DataDefput, "output.csv", row.names = F, quote = F)

tín dụng cho Peter và Ilja, UMCG, Hà Lan

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.