Как удалить все объекты, кроме одного из рабочей области в R?

У меня есть рабочее пространство с большим количеством объектов, и я хотел бы удалить все, кроме одного. В идеале я бы хотел не вводить rm(obj.1, obj.2... obj.n) . Можно ли указать remove all objects but these ones ?

Вот простая конструкция, которая сделает это, используя setdiff :

 rm(list=setdiff(ls(), "x")) 

И полный пример. Запустите это на свой страх и риск – он удалит все переменные, кроме x :

 x <- 1 y <- 2 z <- 3 ls() [1] "x" "y" "z" rm(list=setdiff(ls(), "x")) ls() [1] "x" 

Использование функции keep из пакета gdata довольно удобно.

 > ls() [1] "a" "b" "c" library(gdata) > keep(a) #shows you which variables will be removed [1] "b" "c" > keep(a, sure = TRUE) # setting sure to TRUE removes variables b and c > ls() [1] "a" 

Я думаю, что еще один вариант – открыть рабочую область в RStudio, а затем сменить список на сетку в правом верхнем углу среды (изображение ниже). Затем отметьте объекты, которые хотите очистить, и, наконец, нажмите на кнопку очистки.

введите описание изображения здесь

Чтобы сохранить все объекты, имена которых соответствуют шаблону, вы можете использовать grep , например:

 to.remove <- ls() to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove") rm(list=to.remove) 

Замените v именем объекта, который вы хотите сохранить

 rm(list=(ls()[ls()!="v"])) 

hat-tip: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html

Я просто потратил несколько часов на поиск ответа на подобный, но немного другой вопрос: мне нужно было удалять все объекты в R (включая функции), за исключением нескольких векторов.

Один из способов сделать это:

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

Где векторы, которые я хочу сохранить, называются «a» и «c».

Надеюсь, это поможет любому, кто ищет такое же решение!

Это использует опцию pattern ls() , если у вас много объектов с тем же шаблоном, который вы не хотите хранить:

 > foo1 <- "junk"; foo2 <- "rubbish"; foo3 <- "trash"; x <- "gold" > ls() [1] "foo1" "foo2" "foo3" "x" > # Let's check first what we want to remove > ls(pattern = "foo") [1] "foo1" "foo2" "foo3" > rm(list = ls(pattern = "foo")) > ls() [1] "x" 
 require(gdata) keep(object_1,...,object_n,sure=TRUE) ls() 

Изнутри функции rm все объекты в .GlobalEnv, за исключением функции

 initialize <- function(country.name) { if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) { rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv) } } 

Как насчет этого?

 # Removes all objects except the specified & the function itself. rme <- function(except=NULL){ except = ifelse(is.character(except), except, deparse(substitute(except))) rm(list=setdiff(ls(envir=.GlobalEnv), c(except,"rme")), envir=.GlobalEnv) } 

если вы хотите удалить каждый объект, кроме df, из среды:

 rm(list = ls(pattern="[^df]")) 

давайте подумаем по-другому, что, если мы хотим удалить группу? попробуй это,

  rm(list=ls()[grep("xxx",ls())]) 

Мне лично не нравится слишком много таблиц, переменных на моем экране, но я не могу избежать их использования. Поэтому я называю временные вещи, начинающиеся с «xxx», поэтому я могу удалить их после того, как он больше не используется.

Ниже будут удалены все объекты с консоли.

 rm(list = ls()) 
  • Как проверить, вызывает ли вызов функции предупреждение?
  • Как создать пример данных из частных данных (заменяя имена переменных и уровни владельцами неинформативных мест)?
  • multithreading с R?
  • cbind a df с пустым df (cbind.fill?)
  • как вернуть число десятичных знаков в R
  • R Ошибка в операторе x $ ed: $ недействительна для атомных векторов
  • Настройка прокси для R
  • Объедините (rbind) кадры данных и создайте столбец с именем исходных кадров данных
  • Увеличение на 1 для каждого изменения в столбце
  • Возвращаемый индекс наименьшего значения в векторе?
  • Какой самый полезный трюк?
  • Давайте будем гением компьютера.