Wie lösche ich nur einige bestimmte Objekte aus dem Arbeitsbereich?

161

Ich möchte einige Daten aus dem Arbeitsbereich entfernen. Ich weiß, dass die Schaltfläche "Alle löschen" alle Daten entfernt. Ich möchte jedoch nur bestimmte Daten entfernen.

Zum Beispiel habe ich diese Datenrahmen im Datenabschnitt:

data
data_1
data_2
data_3

Ich möchte entfernen data_1, data_2und data_3, während halten data.

Ich habe versucht data_1 <- data_2 <- data_3 <- NULL, die Daten zu entfernen (glaube ich), sie aber trotzdem im Arbeitsbereich zu belassen, sodass ich sie nicht vollständig ausführen möchte.

Ford
quelle

Antworten:

246

Sie finden die Antwort durch Eingabe ?rm

rm(data_1, data_2, data_3)
Pop
quelle
44
Zum Löschen aller Variablen, die Sie verwenden können rm(list=ls()).
Larkee
1
aber wie kann man mit der GUI ohne die Kommandozeile umgehen? wie in Revolution R
Skan
1
Was ist, wenn ich alle Variablen mit Namen entfernen möchte, die mit dem Buchstaben A beginnen, sagen Sie 'A001', 'A002' .... 'A999'. Ich möchte nicht so viele Variablennamen eingeben. Vielen Dank!
user3768495
2
Verwenden Sie die Antwort von @ mbask (direkt unten): rm(list = ls()[grep("A", ls())])
Pop
74

Ein nützlicher Weg, um eine ganze Reihe von gleichnamigen Objekten zu entfernen:

rm(list = ls()[grep("^tmp", ls())])

Dadurch werden alle Objekte entfernt, deren Name mit der Zeichenfolge "tmp" beginnt.

Bearbeiten: Nach Gsees Kommentar unter Verwendung des patternArguments:

rm(list = ls(pattern = "^tmp"))

Bearbeiten: Wenn Sie auf einen Rafael-Kommentar antworten, können Sie nur eine Teilmenge von Objekten beibehalten, indem Sie die Daten, die Sie beibehalten möchten, mit einem bestimmten Muster benennen. Wenn Sie beispielsweise alle Objekte entfernen papermöchten, deren Name nicht mit beginnt, geben Sie den folgenden Befehl aus:

rm(list = grep("^paper", ls(), value = TRUE, invert = TRUE))
mbask
quelle
7
lsakzeptiert ein patternArgument, so dass Sie das vereinfachen können, umrm(list=ls(pattern="^tmp"))
GSee
1
Überprüfen Sie separat, was passiert, wenn Sie value=TRUEmit grep... arbeiten. Dies könnte einige Eingaben ersparen.
GSee
Hallo, gibt es eine Möglichkeit, einige wenige Daten zu speichern und die anderen zu entfernen (eine größere Menge)? Prost
Rafael
1
Hallo! Und wie könnte ich in meiner R-Umgebung zwei verschiedene Muster beibehalten? Ich habe versucht "rm (list = grep (" ^ paper "|" ObjectExample ", ls (), value = TRUE, invert = TRUE))". Weiß jemand?
Dekike
1
Sie sollten Ihren regulären Ausdruck in das patternArgument aufnehmen grep:rm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask
15

Der folgende Befehl reicht aus

rm(list=ls(all=TRUE))
jaamit
quelle
2
Dies wird alles aus dem Arbeitsbereich zu entfernen, nicht nur data1, data2und data3(also datawird auch entfernt werden). Welches ist in Ordnung, wenn es das ist, was Sie wollen ...
Phil
2
Und was ist, wenn man nur Daten entfernen möchte, keine Funktionen, Werte oder andere Objekte beispielsweise in der globalen Umgebung?
Nikos Alexandris
8

Verwenden Sie den folgenden Befehl

remove(list=c("data_1", "data_2", "data_3"))
S. Elzwawi
quelle
6

Sie können die aproposFunktion verwenden, mit der die Objekte unter Verwendung eines Teilnamens gefunden werden.

rm(list = apropos("data_"))
Saroj Nayak
quelle
3

Wenn Sie nur eine aus einer Gruppe von Variablen entfernen möchten, können Sie eine Liste erstellen und nur die Variable behalten, die Sie benötigen. Mit der Funktion rm können alle Variablen außer "Daten" entfernt werden. Hier ist das Skript:

0->data
1->data_1
2->data_2
3->data_3
#check variables in workspace
ls()
rm(list=setdiff(ls(), "data"))
#check remaining variables in workspace after deletion
ls()

#note: if you just use rm(list) then R will attempt to remove the "list" variable. 
list=setdiff(ls(), "data")
rm(list)
ls()
Dan Thompson
quelle
3

Wenn Sie RStudio verwenden, sollten Sie den rm(list = ls())Ansatz niemals verwenden ! * Stattdessen sollten Sie Ihren Workflow so gestalten, dass Sie häufig die Verknüpfung Ctrl+ Shift+ verwenden F10, um Ihre R-Sitzung neu zu starten. Dies ist der schnellste Weg, um sowohl den aktuellen Satz benutzerdefinierter Variablen zu zerstören als auch geladene Pakete, Geräte usw. zu löschen. Die Reproduzierbarkeit Ihrer Arbeit wird durch die Übernahme dieser Gewohnheit deutlich erhöht.

Sehen Informationen finden diesem ausgezeichneten Thread in der Rstudio-Community für (h / t @kierisi) (der Hauptinhalt wird von dem erfasst, was ich bereits angegeben habe).

Ich muss zugeben, dass meine ersten Jahre der R-Codierung Skript für Skript mit dem rm"Trick" beginnen - ich schreibe diese Antwort als Rat an alle anderen, die möglicherweise ihre R-Karriere beginnen.

* Natürlich gibt es dafür legitime Verwendungszwecke - ähnlich wie attach-, aber Anfänger werden zu einem späteren Zeitpunkt viel besser bedient (IMO), wenn sie diese Brücke überqueren.

MichaelChirico
quelle
3
  1. Stellen Sie in RStudio sicher, dass sich die EnvironmentRegisterkarte im Grid(nicht List) Modus befindet.

  2. Kreuzen Sie die Objekte an, die Sie aus der Umgebung entfernen möchten.

  3. Klicken Sie auf das Besensymbol.

Paul
quelle
2
paste0("data_",seq(1,3,1)) 
# makes multiple data.frame names with sequential number
rm(list=paste0("data_",seq(1,3,1))
# above code removes data_1~data_3
Hyunwoo Jeong
quelle
1

So löschen Sie alle Daten:

klicke auf Misc>Remove all objects .

Du bist gut zu gehen.

So löschen Sie die Konsole:

klicke auf edit>Clear console .

Kein Code erforderlich.

Abdul
quelle
1
Obwohl ich tun musste Session> Clear Workspace....
Peter K.