如何在 R 中删除函数局部环境中的变量子集?

  • 本文关键字:环境 变量 子集 函数局 删除 r
  • 更新时间 :
  • 英文 :


在函数返回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= .

最新更新