Ответы:
Вот простая конструкция, которая сделает это, используя 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, а затем изменить список на сетку в правом верхнем углу среды (изображение ниже). Затем отметьте объекты, которые вы хотите очистить, и, наконец, нажмите «Очистить».
Я просто потратил несколько часов на поиски ответа на похожий, но немного другой вопрос - мне нужно было иметь возможность удалить все объекты в R (включая функции), за исключением нескольких векторов.
Один из способов сделать это:
rm(list=ls()[! ls() %in% c("a","c")])
Где векторы, которые я хочу сохранить, называются «а» и «с».
Надеюсь, это поможет любому, кто ищет такое же решение!
rm(list=setdiff(ls(), c("a", "c")))
, верно? Смотри ответ Андри.
Чтобы сохранить все объекты, имена которых соответствуют шаблону, вы можете использовать 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"]))
шапка: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
Это использует параметр ls()
's' pattern
в случае, если у вас много объектов с тем же шаблоном, который вы не хотите сохранять:
> 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"
rm
функцию всегда следует использовать с осторожностью (особенно в оболочке!). Смотрите мои правки для ответа на ваш вопрос.
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()
давайте подумаем иначе, что если мы хотим удалить группу? попробуй это,
rm(list=ls()[grep("xxx",ls())])
Мне лично не нравится слишком много таблиц, переменных на моем экране, но я не могу избежать их использования. Поэтому я называю временные элементы, начинающиеся с «xxx», чтобы я мог удалить их после того, как они больше не используются.
Внутри функции, rm все объекты в .GlobalEnv, кроме функции
initialize <- function(country.name) {
if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
}
}
Следующее удалит все объекты из вашей консоли
rm(list = ls())