在函数返回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
时。
答案 0 :(得分:0)
这有效:
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
正如this thread所述,您需要指定list=
。