Respostas:
Aqui está uma construção simples que fará isso, usando setdiff
:
rm(list=setdiff(ls(), "x"))
E um exemplo completo. Execute isso por sua conta e risco - ele removerá todas as variáveis, exceto x
:
x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"
rm(list=setdiff(ls(), "x"))
ls()
[1] "x"
Usar a keep
função do gdata
pacote é bastante conveniente.
> 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"
Penso que outra opção é abrir o espaço de trabalho no RStudio e depois alterar a lista para grade no canto superior direito do ambiente (imagem abaixo). Marque os objetos que deseja limpar e, finalmente, clique em limpar.
Passei várias horas procurando a resposta para uma pergunta semelhante, mas um pouco diferente - eu precisava ser capaz de excluir todos os objetos em R (incluindo funções), exceto alguns vetores.
Uma maneira de fazer isso:
rm(list=ls()[! ls() %in% c("a","c")])
Onde os vetores que eu quero manter são nomeados 'a' e 'c'.
Espero que isso ajude quem procura a mesma solução!
rm(list=setdiff(ls(), c("a", "c")))
, certo? Veja a resposta de @ Andrie.
Para manter todos os objetos cujos nomes correspondam a um padrão, você pode usar grep
o seguinte:
to.remove <- ls()
to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove")
rm(list=to.remove)
Substitua v
pelo nome do objeto que você deseja manter
rm(list=(ls()[ls()!="v"]))
dica: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
Isso leva vantagem de ls()
's pattern
opção, no caso de você ter um monte de objetos com o mesmo padrão que você não deseja manter:
> 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
função sempre deve ser usada com cuidado (mais ainda no shell!). Veja minha edição para obter uma resposta para sua pergunta.
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()
vamos pensar de maneira diferente, e se quisermos remover um grupo? tente isso,
rm(list=ls()[grep("xxx",ls())])
Pessoalmente, não gosto de muitas tabelas e variáveis na tela, mas não consigo evitar usá-las. Por isso, nomeio as coisas temporárias que começam com "xxx", para poder removê-las depois que não forem mais usadas.
De dentro de uma função, rm todos os objetos em .GlobalEnv, exceto a função
initialize <- function(country.name) {
if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
}
}
A seguir, você removerá todos os objetos do seu console
rm(list = ls())