2010-02-17 10 views
45

Alle,Organizing R Source Code

Ich beginne objektorientierten R-Code zum ersten Mal und erwarte mit mehreren R Dateien mit Abhängigkeiten zwischen zu schreiben. Ich bin neu in R und habe noch nichts außerhalb eines einzigen massiven Skripts geschrieben, um Ideen zu testen. Gibt es online Ressourcen, die Tipps geben, wie man Code organisieren soll? Kurz vor Beschreibungen, wie man Pakete baut, finde ich solche Anleitung nicht. An diesem Punkt möchte ich den Code nur so organisieren, dass er das Laden und Interagieren mit der Sammlung von Routinen so einfach wie möglich macht.

Schätzen Sie alle Hinweise, die Sie bereitstellen können.

Chris

+2

Mögliche Duplikate: http://StackOverflow.com/Questions/1266279/How-To-Organize-Large-R-Programs – Shane

Antwort

41

Diese Frage ist sehr eng verwandt mit: "How to organize large R programs?"

Sie sollen ein R-Paket betrachten zu schaffen. Sie können die Funktion package.skeleton verwenden, um mit einer Reihe von R-Dateien zu beginnen. Ich empfehle auch dringend, roxygen zu verwenden, um das Paket am Anfang zu dokumentieren, weil es viel schwieriger ist, es im Nachhinein zu tun.

Gelesen "Writing R Extensions". Das Online-Buch "Statistik mit R" hat a section on this subject. Werfen Sie auch einen Blick auf Creating R Packages: A Tutorial von Friedrich Leisch. Zu guter Letzt, wenn Sie in NY sind, kommen Sie zum nächsten Treffen der NY Use-R Group unter "Authoring R Packages: a gentle introduction with examples".

nur einige Vorschläge über gute Praktiken wieder aufwärmen:

  • Ein Paket ermöglicht es Ihnen, R CMD check zu verwenden, die zu fangen Bugs sehr hilfreich ist; separat können Sie mit dem codetools Paket betrachten.
  • Ein Paket zwingt Sie auch, eine minimale Menge an Dokumentation zu erstellen, was auf lange Sicht zu besseren Praktiken führt.
  • Sie sollten auch Unit-Tests durchführen (z. B. mit RUnit), wenn Ihr Code robust/wartbar sein soll.
  • Sie sollten einen Styleguide verwenden (z. B. Google Style Guide).
  • Verwenden Sie ein Versionskontrollsystem von Anfang an, und wenn Sie Ihren Code Open Source machen wollen, dann sollten Sie github oder r-forge verwenden.

Edit:

In Bezug auf, wie inkrementelle Änderungen vornehmen kann, ohne den Wiederaufbau und das volle Paket installieren: Ich finde die einfachste Sache zu tun ist, Veränderungen in Ihrer relevanten R-Datei zu erstellen und verwenden Sie dann den source Befehl um diese Änderungen zu laden. Sobald Sie Ihre Bibliothek in eine R-Sitzung geladen haben, ist sie in der Umgebung immer niedriger (und niedriger als die .GlobalEnv). Daher werden alle Änderungen, die Sie direkt oder direkt laden, zuerst verwendet (verwenden Sie dazu den Befehl search) Dies). Auf diese Weise können Sie Ihr Paket zugrunde legen und Änderungen überschreiben, während Sie sie in der Umgebung testen.

Alternativ können Sie eine IDE wie StatET oder ESS verwenden. Sie machen das Laden einzelner Zeilen oder Funktionen aus einem R-Paket sehr einfach. StatET ist besonders gut dafür ausgelegt, Pakete in einer verzeichnisähnlichen Struktur zu verwalten.

+0

Danke Shane. Genau die Anleitung, nach der ich gesucht habe. – Chris

+1

Also hier ist eine andere Frage, die in der SO-Diskussion auftrat, auf die Sie verwiesen haben und die unbeantwortet geblieben ist. Wie können Sie den Paketinhalt neu laden, ohne eine Installation durchzuführen? Gibt es einen bequemen Weg? Ich versuche nur, den Zyklus in den Griff zu bekommen, den man gerade schreibt, während man Code schreibt und testet. – Chris

+3

Sehen Sie sich die Funktion "sourceDir" an, die im Beispielabschnitt der Hilfedatei für die "source" -Funktion steht (geben Sie "? Source" an der R command-Eingabeaufforderung ein). Ich habe eine sehr ähnliche Funktion in meiner Datei ~/.Rprofile, und ich sourceDir() das Paket mypackage/R des Pakets, das ich baue, wie ich Änderungen daran mache. Gelegentlich werde ich das Paket neu installieren, aber ich finde es einfacher, inkrementelle Änderungen vorzunehmen, ohne die laufenden Arbeiten, die ich im Interpreter gemacht habe, wegzublasen. –

0

dies ist für den Vorteil von anderen, die auf diesen Beitrag bei ihrer Suche gerichtet sind. Ich konfrontiert auch genau dasselbe Szenario und fand keine Ressource, die es klar erklärte. Hier ist mein Versuch, die Lösung in ein paar einfachen Schritten zu setzen:
1) Erstellen Sie ein neues Projektverzeichnis
2) Erstellen Sie ein Paket über R-Studio (das gleiche Verfahren wie oben)
3) Halten Sie beide in derselben Stelle (um Verwirrung zu vermeiden).
4) Installieren und laden Sie Pakete: Devtools und und Roxygen2.
5) Verwenden Sie die Funktion load_all().

Und Sie sind fertig.

+0

Was ist Funktion '' 'load_all()' ''? –

+0

load_all lädt ein Paket. Es simuliert ungefähr, was passiert, wenn ein Paket installiert und mit Bibliothek geladen wird –