Antworten:
Hier ist ein einfaches Konstrukt, das dies mithilfe von setdiff
:
rm(list=setdiff(ls(), "x"))
Und ein vollständiges Beispiel. Führen Sie dies auf eigenes Risiko aus - es werden alle Variablen entfernt, außer x
:
x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"
rm(list=setdiff(ls(), "x"))
ls()
[1] "x"
Die Verwendung der keep
Funktion aus dem gdata
Paket ist sehr praktisch.
> 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"
Ich denke, eine andere Möglichkeit besteht darin, den Arbeitsbereich in RStudio zu öffnen und dann die Liste in das Raster oben rechts in der Umgebung zu ändern (Bild unten). Aktivieren Sie dann die Objekte, die Sie löschen möchten, und klicken Sie schließlich auf Löschen.
Ich habe nur einige Stunden damit verbracht, nach der Antwort auf eine ähnliche, aber etwas andere Frage zu suchen - ich musste in der Lage sein, alle Objekte in R (einschließlich Funktionen) außer einer Handvoll Vektoren zu löschen.
Ein Weg, dies zu tun:
rm(list=ls()[! ls() %in% c("a","c")])
Wo die Vektoren, die ich behalten möchte, 'a' und 'c' heißen.
Hoffe das hilft jedem, der nach der gleichen Lösung sucht!
rm(list=setdiff(ls(), c("a", "c")))
, oder? Siehe @ Andries Antwort.
Um alle Objekte zu behalten, deren Namen mit einem Muster übereinstimmen, können Sie Folgendes verwenden grep
:
to.remove <- ls()
to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove")
rm(list=to.remove)
Ersetzen Sie v
durch den Namen des Objekts, das Sie behalten möchten
rm(list=(ls()[ls()!="v"]))
Hut-Tipp: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
Dies nutzt ls()
die pattern
Option von 's , falls Sie viele Objekte mit demselben Muster haben, das Sie nicht behalten möchten:
> 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
Funktion sollte immer mit Vorsicht verwendet werden (mehr in der Shell!). Eine Antwort auf Ihre Frage finden Sie in meiner Bearbeitung.
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()
Lassen Sie uns anders denken, was ist, wenn wir eine Gruppe entfernen wollen? Versuche dies,
rm(list=ls()[grep("xxx",ls())])
Ich persönlich mag nicht zu viele Tabellen und Variablen auf meinem Bildschirm, aber ich kann es nicht vermeiden, sie zu verwenden. Also benenne ich die temporären Dinge, die mit "xxx" beginnen, damit ich sie entfernen kann, nachdem sie nicht mehr verwendet werden.
Rm innerhalb einer Funktion alle Objekte in .GlobalEnv mit Ausnahme der Funktion
initialize <- function(country.name) {
if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
}
}
Im Folgenden werden alle Objekte von Ihrer Konsole entfernt
rm(list = ls())