Очистить глобальную среду, сохранить среду, созданную new.env () - PullRequest
0 голосов
/ 24 февраля 2019

Чтобы поддерживать глобальную среду в чистоте, я создаю некоторые среды с "new.env()".Можно ли удалить все объекты в глобальной среде, но сохранить всю среду, созданную с помощью «new.env()»?.

Что я пробовал до сих пор:

rm(list=ls())

  • Удаляет все объекты в «global.env», включая созданные средыс "new.env()".

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

  • Удаляет все объекты, но сохраняет указанные.Проблема здесь в том, что я хочу избежать добавления имен среды в случае, если они будут либо меняться, либо увеличиваться в количестве.

Требуемое поведение:

Удалить следует удалитьвсе объекты из "global.env", но все среды, созданные с помощью "new.env()", сохраняются.

1 Ответ

0 голосов
/ 24 февраля 2019

Мы можем использовать:

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, но любой «объект», который является средой в пределах .Globalenv).Проверьте это:

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

Оставляет вас только с окружающей средой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...