我将带有规范化名称的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?
答案 0 :(得分:3)
使用list=
功能的save
参数。这允许您将对象的名称指定为字符向量,而不是传递对象本身。例如
lapply(ls(pattern = "errDatas"), function(x) {
save(list=x, file = paste0(x, ".Rda"))
})