将data.frame对象保存到循环内的.Rds文件中

时间:2015-03-24 15:28:55

标签: r dataframe

我将带有规范化名称的data.frame对象放入我的全局环境中,我想将它们保存到.Rda文件中。

我的第一个问题是,我应该将它们保存到一个大的.Rda文件中,还是应该为每个数据框创建一个文件? (df有14个col和~260 000行)。

假设我将它们保存到不同的文件中,我正在考虑这样的函数:(我所有的data.frame名称都以“errDatas”开头)

sapply(ls(pattern = "errDatas"), function(x) save(as.name(x), file = paste0(x, ".Rda")))

但我有这个错误:

Error in save(as.name(x), file = paste0(x, ".Rda")) : objet ‘as.name(x)’ introuvable

似乎save无法解析as.name(x)并按原样对其进行评估。我也试过了eval(parse(text = x)),但它也是一样的。

您是否了解如何在循环中保存数据框?感谢。

我有一个额外的问题,要知道我正在尝试做的事情是否有用且合法: 这些数据框来自csv文件(csv文件的一个数据框,我用read.csv导入)。每天我都有一个新的csv文件,我想对所有的csv文件做一些分析。我意识到从csv读取比保存和加载Rda文件要慢得多。因此,不是每次运行我的程序时都读取所有csv,我实际上只想读取每个csv文件一次,将其保存到Rda文件然后加载它。这是一个好主意吗 ?是否有最佳实践与R?

1 个答案:

答案 0 :(得分:3)

使用list=功能的save参数。这允许您将对象的名称指定为字符向量,而不是传递对象本身。例如

lapply(ls(pattern = "errDatas"), function(x) {
    save(list=x, file = paste0(x, ".Rda"))
})