在函数返回R
之前,我想删除除一两个之外的所有局部变量。
下面是一个最小可重现的示例:
f <- function(){
keep_this_local_var <- 3
remove_this_local_var <- 4
rm(setdiff(ls(environment()), c("keep_local_var"))) # doesn't work
return(ls(environment()))
}
f() # should only be 3
动机:我的"现实生活"f
函数调用source()
几次。每个source()
调用可能会生成大量随机变量。我不会提前知道每个变量的名称;但是,我确实有一个想要保留的变量名称的简短列表。类似的代码过去对我有用,但是当我source
.GlobalEnv
时.
这有效:
f <- function(){
keep_this_local_var <- 3
remove_this_local_var <- 4
rm(
list=setdiff(ls(environment()), "keep_this_local_var"),
envir = environment()
)
return(ls(environment()))
}
f() # should only be 3
正如此线程所提到的,您需要指定 list=
.