我正在寻找一种在 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")

10-07 13:28
查看更多