我想在脚本运行期间清除环境。
我使用的是(略有改动的)功能,我已经看过here
clearEnv <- function(env = parent.frame())
{
rm(list = setdiff( ls(all.names=TRUE, env = env), lsf.str(all.names=TRUE, env = env)),envir = env)
}
但这仅适用于脚本之外。我希望在将其他任何东西保存为变量之前,在我的个人R包的脚本中调用此函数。
有没有办法做到这一点?也许在某个地方嵌套函数?
谢谢!
修改 认为它足够清楚 - 显然不是,所以这是一个最小的例子:
script.R有两个函数
clearEnv <- function(env = parent.frame())
{
rm(list = setdiff( ls(all.names=TRUE, env = env), lsf.str(all.names=TRUE, env = env)),envir = env)
}
myScript <- function(){
clearEnv()
/*do work*/
}
- 这不起作用。我发现根本没有清除环境,因为在运行thisShouldVanish <- 0
之前保存变量时,请说myScript()
,之后它仍然存在。
如果我跑
clearEnv()
myScript()
它按预期工作,但我想只运行myScript()
而不是分开两个函数调用...
我提到过,这个函数是一个包的一部分,所以这些函数和其他任何东西都不得在环境中 - &gt;删除中期应该没问题。
我希望我能够更好地解释它。