R 函数清除当前工作区中的一些变量

R 函数清除当前工作区中的一些变量,r,scope,R,Scope,我如何编写一个通用的R函数来清除当前工作区中的一些自定义变量?当然,我可以通过以下代码在单个脚本中实现这一点: prj = '/path/to/project' src = 'string' data_to_clean = head(iris) rm(list = ls()[ !ls() %in% c('prj', 'src') ] ) # only prj and src remain 然而,我希望这是一个函数,这样它可以适用于多个脚本,并且我可以在一个地方更改不应该清理的变量。这可能吗?我

我如何编写一个通用的R函数来清除当前工作区中的一些自定义变量?当然,我可以通过以下代码在单个脚本中实现这一点:

prj = '/path/to/project'
src = 'string'
data_to_clean = head(iris)
rm(list = ls()[ !ls() %in% c('prj', 'src') ] )
# only prj and src remain

然而,我希望这是一个函数,这样它可以适用于多个脚本,并且我可以在一个地方更改不应该清理的变量。这可能吗?

我认为您希望删除函数本身。重要的一点是告诉
rm
从何处移除这些对象的环境:


clean_workspace如果将其包装到函数中,则必须记住,函数在执行时将创建自己的环境。因此,每次都需要指定环境(在每个
ls
以及
rm
中)。您可能想从
.GlobalEnv
中删除它们

clean_workspace <- function(not_to_be_removed) {
  rm(list = 
    setdiff(ls(envir = .GlobalEnv), c("clean_workspace", not_to_be_removed)), 
    envir = .GlobalEnv)
}

prj = '/path/to/project'
src = 'string'
data_to_clean = head(iris)
clean_workspace(c('prj', 'src'))

clean_workspace@loki是对的。这将只清理由函数调用创建的“新鲜”环境。我想要一个清理当前/全球环境的功能。事实上,我希望已修复。谢谢你们!它几乎回答了我的问题。要在“一个地方”设置变量,我将在函数中定义它们。例如,
函数(not_to_be_remove){not_to_be_remove=c('prj','src');rm(list=setdiff(ls(envir=.GlobalEnv),c(“clean_workspace”,not_to_be_remove)),envir=.GlobalEnv)
,然后在每个脚本的末尾运行