我正在寻找一种在 R 中以不同名称“即时”对变量进行 save()
的方法(请耐心等待!我很确定这不是重复的......)。这是我想要实现的一个例子:
AAA = 1
BBB = 2
XXX = 3
YYY = 4
save(AAA=XXX, BBB=YYY, file="tmp.Rdat")
# does NOT save a variable AAA to file with value 3 in it, which is the aim...
基本上我希望
save()
函数获取 XXX
的值并将其保存到名为 AAA
的变量下的文件中。请注意,这不是关于重命名变量的问题:我当然可以在保存之前重命名变量 XXX
,例如AAA = XXX
然后是 save(AAA, ..., file=...)
但这当然会混淆其余代码中 AAA
的值。显而易见的方法是创建临时变量,然后恢复值:
AAA = 1
BBB = 2
XXX = 3
YYY = 4
AAAtmp = AAA; BBBtmp = BBB # record values of AAA, BBB
AAA = XXX; BBB = YYY
save(AAA, BBB, file="tmp.Rdat")
AAA = AAAtmp; BBB = BBBtmp # restore values of AAA, BBB
...但每个人都会同意这是相当困惑的(尤其是有更多的变量)。
这一直困扰着我一段时间,我的感觉是函数
save()
不能做我想做的事。所以我想我将不得不更新我的代码并继续使用不同的保存功能(例如 saveRDS()
)。谢谢您的帮助!
最佳答案
事实证明,这比我预期的要棘手一些。我有兴趣看看其他人提出了什么,以及对我的解决方案的任何反对意见。
saveit <- function(..., file) {
x <- list(...)
save(list=names(x), file=file, envir=list2env(x))
}
foo <- 1
saveit(bar=foo, file="hi.Rdata")