【问题标题】:Save-function in RR中的保存功能
【发布时间】: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 插件。

标签: r save environment


【解决方案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 中,我写道:“编辑:我知道如何重写这个......”,所以我知道你的意思。对所述问题进行了很好的改进,但最终主要问题是环境。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
相关资源
最近更新 更多