Risposte:
Ecco un semplice costrutto che lo farà, usando setdiff
:
rm(list=setdiff(ls(), "x"))
E un esempio completo. Esegui questo a tuo rischio e pericolo: rimuoverà tutte le variabili tranne x
:
x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"
rm(list=setdiff(ls(), "x"))
ls()
[1] "x"
L'uso della keep
funzione dal gdata
pacchetto è abbastanza 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 che un'altra opzione sia quella di aprire l'area di lavoro in RStudio e quindi cambiare l'elenco in griglia in alto a destra dell'ambiente (immagine in basso). Quindi spunta gli oggetti che vuoi cancellare e infine fai clic su Cancella.
Ho trascorso diverse ore a cercare la risposta a una domanda simile ma leggermente diversa: dovevo essere in grado di eliminare tutti gli oggetti in R (comprese le funzioni) tranne una manciata di vettori.
Un modo per farlo:
rm(list=ls()[! ls() %in% c("a","c")])
Dove i vettori che voglio mantenere sono chiamati "a" e "c".
Spero che questo aiuti chiunque cerchi la stessa soluzione!
rm(list=setdiff(ls(), c("a", "c")))
, giusto? Vedi la risposta di @ Andrie.
Per mantenere tutti gli oggetti i cui nomi corrispondono a un modello, è possibile utilizzare grep
, in questo modo:
to.remove <- ls()
to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove")
rm(list=to.remove)
Sostituisci v
con il nome dell'oggetto che vuoi conservare
rm(list=(ls()[ls()!="v"]))
tip: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
Questo si avvale di ls()
's pattern
opzione, nel caso si hanno un sacco di oggetti con lo stesso modello che non si desidera mantenere:
> 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
funzione dovrebbe sempre essere usata con cura (tanto più nella shell!). Vedi la mia modifica per una risposta alla tua domanda.
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()
pensiamo in modo diverso, e se volessimo rimuovere un gruppo? prova questo,
rm(list=ls()[grep("xxx",ls())])
Personalmente non mi piacciono troppe tabelle e variabili sul mio schermo, ma non posso evitare di usarle. Quindi nomina le cose temporanee che iniziano con "xxx", quindi posso rimuoverle dopo che non sono più utilizzate.
Dall'interno di una funzione, inserire tutti gli oggetti in .GlobalEnv tranne la funzione
initialize <- function(country.name) {
if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
}
}
Quanto segue rimuoverà tutti gli oggetti dalla tua console
rm(list = ls())