R中的保存功能

Posted

技术标签:

【中文标题】R中的保存功能【英文标题】:Save-function in R 【发布时间】:2016-02-19 14:51:17 【问题描述】:

我想使用自定义函数将我的 R 函数保存到文件中。我做了以下:

savefun <- function()
  rm(list = setdiff(ls(), lsf.str())) # to remove all variables first
  save.image(paste0("fun",".RData"))

现在这两行代码在global 中有效,但不在函数内。

通过制作一些随机变量进行测试:

x <- 1243
y <- 39934934

rm(list = setdiff(ls(), lsf.str())) 不会删除这些内容。我试图通过改变环境来修复它,但它不起作用。

有什么提示吗?

【问题讨论】:

save(list=lsf.str(),file="fun.RData") 怎么了??? 看看rm中的envir参数 我确实使用了envir。但它不起作用。什么是正确的论点?不是.GlobalEnv @BenBolker 没有错。但是我经常使用这个功能,我想节省每次设置参数的时间。编辑:我知道如何重写它,但无论如何我想了解在这种情况下如何处理环境。 Tangential:这可能是一个非常好的 RStudio 插件。 【参考方案1】:

您需要确保所有搜索(lslsf.strrm)都在全局环境中:

x <- 1243
y <- 39934934

savefun <- function()
  rm(list = setdiff(ls(envir = .GlobalEnv), lsf.str(envir = .GlobalEnv)), envir = .GlobalEnv) # to remove all variables first
  save.image(paste0("fun",".RData"))


savefun()

【讨论】:

啊我忘了最后一个envir = .GlobalEnv。泰!【参考方案2】:

我还是不明白为什么

savefun <- function(file="fun.RData") 
  save(list=lsf.str(envir = .GlobalEnv), file=file)

不会更直接......(感谢@sebastian-c 的envir= 提醒)

【讨论】:

绝对更直接。在上面的 cmets 中,我写道:“编辑:我知道如何重写这个......”,所以我知道你的意思。对所述问题进行了很好的改进,但最终主要问题是环境。

以上是关于R中的保存功能的主要内容,如果未能解决你的问题,请参考以下文章

R中的变量列表并保存它们

如何从 R 中的 animate 函数中保存 GIF 图像?

试图将 R 环境中的所有内容保存到磁盘

将存储在列表中的数据帧保存到 R 中的单个文件中

将结果保存在 R 中的循环中

更改变量并将输出保存在R中的for循环中