如何删除除环境之外的所有变量

时间:2018-03-26 10:34:15

标签: r r-environment

我想删除除了包含变量的已定义环境之外的所有全局变量。

说我有以下内容:

my.env = new.env()
assign("a", 123, envir = my.env)
my.env$somestring = "Variable mat as vector string"

还有一些全局变量:

Age     <-  as.numeric(42)
HbA     <-  as.numeric(2)
WHR     <-  as.numeric(1.3)

我知道我可以删除所有全局变量,但只能删除setdiff

setdiff(ls(),'Age')
#[1] "HbA"    "my.env" "WHR" 

但是当我打电话给以下时我得到一个错误。这是预期的,因为my.env实际上是一个指针,如果我没有弄错

setdiff(ls(), my.env)
#Error in as.vector(x, mode) : 
#  cannot coerce type 'environment' to vector of type 'any'

如何删除所有变量但保留my.env? (包含变量)

1 个答案:

答案 0 :(得分:2)

尝试

to.del <- setdiff(ls(), "my.env")
rm(list = to.del)

# not relevant anymore
eval(parse(text = paste0("rm(", to.del, ")")))