清除全局环境,保留由new.env()创建的环境

时间:2019-02-24 15:19:47

标签: r

为了保持全局环境的清洁,我使用“ new.env()”创建了一些环境。是否可以删除全局环境中的所有对象,但保留所有使用“ new.env()”创建的环境?

到目前为止,我已经尝试过:

rm(list=ls())

  • 删除“ global.env”中的所有对象,包括使用“ new.env()”创建的环境。

rm(list = ls()[! ls() %in% c("a")])

  • 删除所有对象,但保留指定的对象。这里的问题是,我想避免添加环境名称,以防环境名称更改或数量增加。

想要的行为:

删除应从“ global.env”中删除所有对象,但保留所有使用“ new.env()”创建的环境。

1 个答案:

答案 0 :(得分:0)

我们可以使用:

rm(list=ls(all=TRUE)[sapply(mget(ls(all=TRUE)), function(x) !is.environment(x))])

在新的空环境中进行测试:

s<-9
iris1<-iris[1:24,]
e2<-new.env()
e3<-new.env()
e4<-new.env()

接下来,我们删除所有不是环境的东西(其缺点是我们不是在测试由new.env专门创建的环境,而是在{{1}内的任何“对象”中进行测试) }。 测试一下:

.Globalenv

只留下环境。