如何在R中保存data.frame?


137

我在R中创建了一个不是很大的data.frame,但是要花很多时间才能构建。我要将其另存为文件,然后可以再次在R中打开该文件吗?

Answers:


176

有几种方法。一种方法是使用save()保存确切的对象。例如对于数据帧foo

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

然后加载:

load("data.Rda")

您也可以使用write.table()或类似的方法将表保存为纯文本格式,或dput()获取R代码以重现该表。


2
尽管页面上显示“更安全” ,但也存在dump创建的文件source()-ed 。help(dump)save
IRTFM 2011年

4
我总是喜欢以纯文本格式存储数据,所以我宁愿dump()save(),并write.table()dump()
萨沙Epskamp

我是否纠正了write.table不会保留将0和1列设置为因素的事情,但是那save()/ load()会吗?如果是这样,那也是要考虑的问题。通常,我会处理一部分.csv文件,一旦将它们放到我喜欢的位置,我就喜欢保存它们,这样就不必在每次重新访问项目时都重新运行该代码。因此,保留对结构的工作/调整非常重要。
亨迪

4
是。dump()也节省了结构。有趣的write.table是,它以许多软件可以导入的方式编写表。
2013年

2
这不仅节省了数据框,还节省了更多。请参阅saveRDS保存没有名称的数据框(dhendrickson对此有一个回答)。
PatrickT

91

如果只保存一个对象(数据框),则也可以使用saveRDS
保存:

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

然后阅读:

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

saveRDS和之间的区别save是,在前一种情况下,只能保存一个对象,并且在加载对象后,该对象的名称不会强制相同。


1

假设您创建了一个数据框,并将其命名为“ Data_output”,则可以使用以下语法将其简单地导出到同一目录中。

write.csv(Data_output,“ output.csv”,row.names = F,quote = F)

归功于荷兰UMCG的Peter和Ilja

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.