如何在R中保存data.frame?

164

我在 R 中创建了一个数据框,它不是很大,但构建起来需要相当长的时间。我想将其保存为文件,以便稍后可以再次在 R 中打开它?

3个回答

214

有几种方法,其中之一是使用save()来保存完整的对象。例如,对于数据框foo

有多种方法可以实现R对象的保存,其中之一是使用save()函数来保存完整的对象。例如,对于数据框foo:

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

然后使用以下代码加载它:

load("data.Rda")
你还可以使用write.table()或类似的函数将表格保存为纯文本,或者使用dput()获取可重现该表格的R代码。

2
还有一个名为dump的函数,创建的文件可以通过source()命令加载,尽管help(dump)页面说save更加“安全”。 - IRTFM
4
我总是更喜欢使用纯文本储存数据,因此我更倾向于使用dump()而非save(),以及使用write.table()而非dump() - Sacha Epskamp
我理解的是,write.table不会保留一些设置,例如将0和1列设置为因子,但save()/load()会吗?如果是这样,那么也需要考虑这一点。通常我会有一个处理.csv文件的部分,一旦我把它们处理好了,我就喜欢保存它们,这样我就不必每次重新访问我的项目时都要重新运行那段代码。因此,保留工作/对结构进行微调非常重要。 - Hendy
4
是的,dump()也会保存结构。write.table的好处在于它以许多软件可以导入的方式来写表格。 - Sacha Epskamp
2
这不仅仅是保存数据框。请参阅“saveRDS”以保存没有名称的数据框(dhendrickson已经回答了这个问题)。 - PatrickT

112

如果你只需要保存一个对象(你的数据框),你也可以使用saveRDS函数。
保存方法:

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

然后使用以下方式阅读:

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

saveRDSsave 的区别在于前者只能保存一个对象,并且在加载后对象的名称不强制保持一致。


5
如果您有一个名为df的数据框,您可以直接将其导出到同一目录下:
write.csv(df, "output.csv", row.names=FALSE, quote=FALSE) 

鸣谢:Peter和Ilja,荷兰UMCG。

涉及IT技术的具体翻译需要提供更多细节。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接