Welche Möglichkeiten gibt es, um eine R-Umgebung von Objekten zu reinigen?

8

Ich weiß, dass ich ls () und rm () verwenden kann, um Objekte in meiner Umgebung zu sehen und zu entfernen.

Wenn Sie jedoch mit "alten" .RData-Dateien arbeiten, müssen Sie manchmal eine Umgebung auswählen, um herauszufinden, was Sie behalten und was Sie weglassen müssen.

Was ich gerne machen würde, ist eine GUI-ähnliche Schnittstelle zu haben, die mir erlaubt, die Objekte zu sehen, sie zu sortieren (zum Beispiel nach Größe) und die zu entfernen, die ich nicht brauche (zum Beispiel durch eine Check-Box-Schnittstelle). Da ich mir vorstelle, dass ein solches System derzeit nicht in R implementiert ist, gibt es welche Möglichkeiten? Was verwenden Sie zum Löschen alter .RData-Dateien?

Danke,

Tal

    
Tal Galili 26.05.2010, 16:15
quelle

6 Antworten

2

Vielleicht möchten Sie sich das RGtk2 -Paket ansehen. Sie können sehr einfach eine Schnittstelle mit Glade Interface Designer erstellen und dann die gewünschten R-Befehle anhängen.

Wenn Sie einen guten Ausgangspunkt haben möchten, um Ideen zur Verwendung von RGtk2 zu "stehlen", installieren Sie das Paket rattle und führen Sie rattle(); aus. Dann schau dir den Quellcode an und fange an, deine eigene Schnittstelle zu erstellen:)

Ich mag es ausprobieren und sehen, ob ich etwas Einfaches herausbringen kann.

EDIT: Das ist ein schneller und dreckiger Code, mit dem Sie spielen können. Das große Problem dabei ist, dass aus irgendeinem Grund die rm Anweisung nicht ausgeführt wird, aber ich bin nicht sicher warum ... Ich weiß, dass es die zentrale Anweisung ist, aber zumindest funktioniert die Schnittstelle! : D

TODO:

  • Machen Sie rm work
  • Ich lege alle Variablen in die remObjEnv Umgebung. Es sollte nicht in der aktuellen Variable aufgeführt sein und sollte entfernt werden, wenn das Fenster geschlossen wird
  • Die Liste zeigt nur Objekte in der globalen Umgebung, alles in einer anderen Umgebung wird nicht angezeigt, aber das ist einfach genug, um
  • zu implementieren
  • wahrscheinlich gibt es einen anderen Fehler, an den ich nicht gedacht habe: D

Genießen

%Vor%     
nico 26.05.2010, 22:12
quelle
15

Ich erstelle nie .RData Dateien. Wenn Sie reproduzierbare Forschung betreiben (und Sie sollten es sein!), Sollten Sie in der Lage sein, in R-Dateien zu suchen, um von Eingabedateien zu allen Ausgaben zu gelangen.

Wenn Sie Operationen haben, die lange dauern, ist es sinnvoll, sie zwischenzuspeichern. Wenn Sie oft ein Konstrukt wie:

verwenden %Vor%

Damit können Sie schnell aus zwischengespeicherten Dateien arbeiten, und wenn Sie von Grund auf neu berechnen müssen, können Sie einfach alle rdata-Dateien in Ihrem Arbeitsverzeichnis löschen.

    
hadley 26.05.2010 21:24
quelle
4

Grundlegende Lösung ist, Ihre Daten zu laden, zu entfernen, was Sie nicht wollen und als neue, saubere Daten zu speichern.

Eine andere Möglichkeit, diese Situation zu umgehen, besteht darin, geladene RData zu kontrollieren, indem Sie sie in die eigene Umgebung laden

%Vor%

Jetzt können Sie sehen, was sich darin befindet

%Vor%

Dann haben Sie mehrere Möglichkeiten:

  • schreiben Sie, was Sie zu neuen RData: save(A, B, file="clean.RData", envir=sandbox)
  • Entfernen Sie was Sie nicht wollen von der Umgebung rm(x, z, u, envir=sandbox)
  • Erstellen Sie eine Kopie der gewünschten Variablen im globalen Arbeitsbereich und entfernen Sie sandbox

Ich mache normalerweise etwas Ähnliches wie die dritte Option. Laden Sie meine Daten, führen Sie einige Überprüfungen durch, transformieren Sie die endgültigen Daten in den globalen Arbeitsbereich und entfernen Sie die Umgebungen.

Sie können immer implementieren, was Sie wollen. Also

  1. Lade die Daten von vars <- load("some_old.RData")
  2. Größen abrufen von vars_size <- sapply(vars, function(x) object.size(get(x)))
  3. Bestellen Sie sie
    vars <- vars[order(vars_size, decreasing=TRUE)]
    vars_size <- vars_size [order(vars_size, decreasing=TRUE)]
  4. Dialogfeld erstellen (hängt vom Betriebssystem ab, hier ist Windows)
    vars_with_size <- paste(vars,vars_size)
    vars_to_save <- select.list(vars_with_size, multiple=TRUE)
  5. Entfernen Sie, was Sie nicht wollen
    rm(vars[!vars_with_size%in%vars_to_save])

Zur netten Form der Objektgröße verwende ich eine Lösung basierend auf getAnywhere(print.object_size)

%Vor%

Dann in 4. kann man paste(vars, pretty_size(vars_size))

verwenden     
Marek 26.05.2010 21:38
quelle
2

Sobald Sie herausgefunden haben, was Sie behalten möchten, können Sie die Funktion -keep- aus dem Paket gdata verwenden, was der Name vermuten lässt.

%Vor%

Siehe help (keep) für Details zu den Optionen -all- und -sure-.

%Vor%

Diese Funktion ist so nützlich, dass ich überrascht bin, dass sie nicht Teil von R selbst ist.

    
PatrickT 21.03.2013 06:29
quelle
1

Das OS X gui hat so etwas, es heißt Workspace Browser. Ziemlich praktisch.

Ich habe mir auch eine Schnittstelle gewünscht, die die Sitzungsabhängigkeit zwischen Objekten anzeigt, d. h. wenn ich von einem Plot () aus anfange und rückwärts arbeite, um alle Objekte zu finden, mit denen er erstellt wurde. Dies würde erfordern, den Verlauf zu analysieren.

    
Ken Williams 26.05.2010 17:17
quelle
1

Es gibt keine Kontrollkästchen zum Löschen, stattdessen wählen Sie die Datei (en) und klicken dann auf Löschen. Die folgende Lösung ist jedoch ziemlich einfach zu implementieren:

%Vor%     
jverzani 28.05.2010 03:31
quelle

Tags und Links