Wie lassen sich R-Code und Ausgabe effizient organisieren? [geschlossen]


23

Ich bin auf der Suche nach Informationen darüber, wie andere ihren R-Code und ihre Ausgabe organisieren.

Meine derzeitige Praxis besteht darin, Code in Blöcken in eine Textdatei als solche zu schreiben:

#=================================================
# 19 May 2011
date()
# Correlation analysis of variables in sed summary
load("/media/working/working_files/R_working/sed_OM_survey.RData")
# correlation between estimated surface and mean perc.OM in epi samples
cor.test(survey$mean.perc.OM[survey$Depth == "epi"], 
    survey$est.surf.OM[survey$Depth   == "epi"]))
#==================================================

Anschließend füge ich die Ausgabe in eine andere Textdatei ein, normalerweise mit einigen Anmerkungen.

Die Probleme bei dieser Methode sind:

  1. Der Code und die Ausgabe sind nur nach Datum explizit verknüpft.
  2. Der Code und die Ausgabe sind chronologisch geordnet und können daher schwer zu suchen sein.

Ich habe darüber nachgedacht, ein Sweave-Dokument mit allem zu erstellen, da ich dann ein Inhaltsverzeichnis erstellen könnte, aber dies scheint mühsamer zu sein als die damit verbundenen Vorteile.

Lassen Sie mich wissen, welche effektiven Routinen Sie zur Organisation Ihres R-Codes und Ihrer Ausgabe haben, um die Analyse effizient zu durchsuchen und zu bearbeiten.


2
Nur um das Kopieren / Einfügen zu vermeiden, sink()oder capture.output()um Ihre Freunde zu sein. Reporting - Dienstprogramme, wie Hmisc , Sweave oder Gebräu wert sind (Ihr Punkt 1) zu berücksichtigen. Versionierungssysteme ( rcs , svn oder git ) könnten bei Punkt 2
hilfreich sein

@chl - danke für die vorschläge. Ich war mir nicht bewusst sink()und capture.output(). Das ist großartig.
DQdlM

1
heute gibt es auch knitr!
kjetil b halvorsen

Antworten:


22

Sie sind nicht die erste Person, die diese Frage stellt.


+1 und der erste Link, den du
angibst

@chl Danke! Ich habe mich gefragt, ob diese Frage ein Duplikat ist und geschlossen werden sollte ...
Bernd Weiss

Es ist, IMO. Da es jedoch keine zu schließenden Stimmen gibt, zögere ich, sie zu schließen. Auch die ältere war allgemeiner, aber eine sehr ähnliche Frage wurde in der Vergangenheit geschlossen. Lass uns abwarten, wie es geht.
chl

danke für die liste! Das ist sehr nützlich. Ich nahm an, dass ich nicht der Erste war, der diese Frage stellte, aber ich schien bei meiner (offensichtlich unpassenden) anfänglichen Suche nicht viel zu finden.
DQdlM

6

Ich für meinen Teil organisiere alles in 4 Dateien für jedes Projekt oder jede Analyse. (1) 'Code' Wo ich Textdateien von R-Funktionen speichere. (2) 'sql' Wo ich die Abfragen aufbewahre, die zum Sammeln meiner Daten verwendet werden. (3) 'dat' Wo ich Kopien (normalerweise csv) meiner rohen und verarbeiteten Daten aufbewahre. (4) 'rpt' Wo ich die Berichte speichere, die ich verteilt habe.

ALLE meine Dateien werden mit sehr ausführlichen Namen benannt, z. B. 'analysis_of_network_abc_for_research_on_modified_buffer_19May2011'.

Ich schreibe auch eine detaillierte Dokumentation im Voraus, in der ich die Hypothese, alle Annahmen, Einschluss- und Ausschlusskriterien sowie die Schritte, die ich unternehmen möchte, um mein Ergebnis zu erreichen, organisiere. All dies ist von unschätzbarem Wert für wiederholbare Nachforschungen und erleichtert meinen jährlichen Zielsetzungsprozess.


2

Jetzt, wo ich zu Sweave gewechselt habe, möchte ich nie mehr zurück. Insbesondere wenn Sie Plots als Ausgabe haben, ist es viel einfacher, den Code zu verfolgen, der zum Erstellen der einzelnen Plots verwendet wird. Es macht es auch viel einfacher, eine Kleinigkeit am Anfang zu korrigieren und durch die Ausgabe laufen zu lassen, ohne etwas manuell wiederholen zu müssen.


1
Sweave ist wundervoll. Es ist gewöhnungsbedürftig, aber wenn Sie TeX und R bereits kennen, ist dies die naheliegende Wahl. Es ermöglicht Ihnen auch, nie wieder Zeit damit zu verbringen, Tabellenspalten auszurichten, was sehr schön ist.
richiemorrisroe

danke für die eingabe. Meine 2 Sorgen mit Sweave sind 1) Ich werde mit einer Unmenge von Dateien in meinem Verzeichnis fertig werden - besonders mit vielen Zahlen, und 2) Ich muss wirklich vorsichtig mit dem Code sein, um jedes Mal, wenn ich das gesamte Dokument kompiliere, Schluckauf zu vermeiden (zB denke ich, dass etwas geladen ist und nicht). Hast du diese Probleme?
DQdlM

1) Sie können wählen, ob Sie die Zwischendateien löschen möchten. Ich benutze das Sweave.sh-Skript ( cran.r-project.org/contrib/extra/scripts/Sweave.sh ), das dies automatisch tut. obwohl kann leicht ausgeschaltet werden. Wenn Sie dies tun, stellen Sie sicher, dass Sie wissen, was gelöscht wird, bevor Sie es verwenden, um eine mögliche Katastrophe zu vermeiden. Die Kurzversion ist, dass, wenn keine Dateien den Basisnamen Ihrer Rnw-Datei teilen, Sie in Ordnung sind.
Aaron - Setzen Sie Monica

2) Meiner Meinung nach ist es eine gute Sache, auf diese Weise vorsichtig zu sein, und manchmal wird mein Sweave-Dokument genau zu diesem Zweck kompiliert, d Analyse.
Aaron - Setzen Sie Monica

1
@ naught101: Für lange Analysen führe ich sie separat aus und speichere die Ergebnisse, normalerweise in einer .RDataDatei, zur Eingabe durch das Sweave-Dokument. Es gibt jedoch auch einige großartige Optionen, um die Ergebnisse eines Codeblocks zu "cachen", damit er nicht erneut ausgeführt wird.
Aaron - Reinstate Monica

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.