Rückgängig-Befehl in R

8

Ich kann in R nicht etwas finden, was die Wirkung eines Undo-Befehls hat (weder in Eine Einführung in R noch in R in Kürze). Ich interessiere mich besonders für das Rückgängigmachen / Löschen, wenn ich mit interaktiven Graphen arbeite.

Welche Ansätze schlagen Sie vor?

    
Roberto 19.06.2010, 17:28
quelle

2 Antworten

24

Sie sollten einen anderen Ansatz wählen, der zu reproduzierbarer Arbeit führt:

  • Wähle einen Editor, den du magst und der R unterstützt
  • Schreiben Sie Ihren Code in "Snippets", dh kurze Dateien für Funktionen, und verwenden Sie dann die Funktionen des Editors / R Integration um den Code an den R Dolmetscher
  • zu senden
  • Wenn Sie einen Fehler machen, bearbeiten Sie Ihr Snippet erneut und führen Sie es erneut aus
  • Sie werden immer ein Protokoll von dem haben, was Sie gemacht haben

All dies funktioniert enorm gut in ESS , weshalb viele erfahrene R Benutzern gefällt diese Umgebung. Aber Redakteure sind eine subjektive und persönliche Wahl; Andere Leute mögen Eclipse mit StatET besser. Es gibt auch andere Lösungen für Mac OS X und Windows, und all dies wurde schon unzählige Male hier auf SO und an anderen Orten wie den R-Listen diskutiert.

    
Dirk Eddelbuettel 19.06.2010, 19:03
quelle
13

Im Allgemeinen nehme ich Dirks Strategie an. Sie sollten darauf achten, dass Ihr Code vollständig reproduzierbar ist, wie Sie Ihre Rohdaten in Output umgewandelt haben.

Wenn Sie jedoch komplexen Code haben, kann es sehr lange dauern, alles neu zu starten. Ich hatte Code, der über 30 Minuten benötigt, um die Daten zu verarbeiten (d. H. Importieren, transformieren, zusammenführen usw.). In diesen Fällen würde eine einzelne datenzerstörende Codezeile erfordern, dass ich 30 Minuten warten muss, um meinen Arbeitsbereich wiederherzustellen. Unter datenvernichtendem Code verstehe ich Dinge wie:

  • x <- merge(x, y)
  • df$x <- df$x^2

z. B., fusioniert, ersetzt eine vorhandene Variable durch eine Transformation, entfernt Zeilen oder Spalten und so weiter. In diesen Fällen ist es einfach, besonders wenn man zuerst lernt, dass R einen Fehler macht.

Um zu vermeiden, dass ich diese 30 Minuten warten muss, nehme ich mehrere Strategien an:

  • Wenn ich etwas tun möchte, bei dem die Gefahr besteht, dass ich meine aktiven Objekte zerstöre, kopiere ich das Ergebnis zunächst in ein temporäres Objekt. Ich werde dann überprüfen, ob es mit dem temporären Objekt funktioniert hat, und es dann erneut ausführen, indem ich es durch das richtige Objekt ersetze. Z. B. zuerst temp <- merge(x, y); ausführen, überprüfen, ob es funktioniert hat str(temp); head(temp); tail(temp) und wenn alles gut aussieht x <- merge(x, y)
  • Wie in der psychologischen Forschung üblich, habe ich oft große Datenrahmen mit Hunderten von Variablen und verschiedenen Untergruppen von Fällen. Für eine bestimmte Analyse (z. B. eine Tabelle, eine Figur, einen Ergebnistext) entwerfe ich oft nur die Teilmenge von Fällen und Variablen, die ich brauche, in ein separates Objekt für die Analyse und arbeite mit diesem Objekt, wenn ich meine vorbereite und finalisiere Analysecode. Auf diese Weise ist es weniger wahrscheinlich, dass ich versehentlich meinen Hauptdatenrahmen beschädige. Dies setzt voraus, dass die Ergebnisse der Analyse nicht in den Hauptdatenrahmen zurückgeführt werden müssen.
  • Wenn ich eine große Anzahl komplexer Datentransformationen abgeschlossen habe, kann ich eine Kopie der Kernarbeitsbereichsobjekte speichern. Zum Beispiel, save(x, y, z , file = 'backup.Rdata') Wenn ich einen Fehler mache, muss ich nur diese Objekte neu laden.
  • df$x <- NULL ist eine praktische Methode zum Entfernen einer Variablen in einem Datenrahmen, den Sie nicht erstellen wollten

Aber am Ende laufe ich immer noch den ganzen Code von Grund auf, um zu überprüfen, ob das Ergebnis reproduzierbar ist.

    
Jeromy Anglim 20.06.2010 08:16
quelle

Tags und Links