Ich plane, R-Pakete zu schreiben.
Ich dachte, es wäre gut, den Quellcode bestehender Pakete zu studieren, um die Konventionen der Paketkonstruktion zu lernen.
Meine Kriterien für gute Studienangebote:
- Einfache statistische / technische Ideen : Es geht darum, etwas über die Mechanik des Verpackungsbaus zu lernen. Für das Verständnis des Pakets sollten keine detaillierten, in hohem Maße domänenspezifischen Kenntnisse über das eigentliche Thema des Pakets erforderlich sein.
- Einfacher und konventioneller Codierungsstil : Ich suche etwas mehr als,
Hello World
aber nicht viel mehr. Idiosynkratische Tricks und Hacks würden ablenken, wenn man zum ersten Mal R-Pakete lernt. - Guter Codierungsstil : Der Code ist gut geschrieben. Es zeigt sowohl ein Verständnis für eine gute Codierung im Allgemeinen als auch ein Bewusstsein für die Konventionen der Codierung in R.
Fragen:
- Welche Pakete wären gut zum Lernen?
- Warum sollte der vorgeschlagene Quellcode des Pakets in Bezug auf die oben genannten Kriterien oder andere möglicherweise relevante Kriterien gut zu studieren sein?
Update (13/12/2010) Nach den Kommentaren von Dirk wollte ich klarstellen , dass es ohne Zweifel gut ist, viele Pakete zuerst zu studieren. Ich bin auch damit einverstanden, dass Pakete Modelle für verschiedene Dinge bereitstellen (z. B. Vignetten, S3-Klassen, S4-Klassen, Komponententests, Sauerstoff usw.). Dennoch wäre es interessant, zunächst konkrete Vorschläge zu guten Paketen und die Gründe dafür zu lesen.
Ich habe auch die Frage oben aktualisiert, um auf "Pakete" anstatt "Paket" zu verweisen.
Antworten:
Ich würde vorschlagen, das Zoo- Paket aus folgenden Gründen anzusehen:
useDynLib
,import
,export
, undS3method
;RUnit
;.Call
Schnittstelle;Es wird kein Sauerstoff verwendet, was sehr praktisch ist, aber 7 von 8 sind nicht schlecht. ;-)
Um auf Ihre Kriterien zu antworten:
zoo
Ist eine matrixartige Klasse, die nach etwas geordnet ist . Keine domänenspezifischen Kenntnisse erforderlich.zoo
scheint ein paar eigenwillige Kodierungskonventionen zu haben, aber nichts übertriebenes, das das Verständnis des Codes behindert.zoo
zielt darauf ab, mit R so konsistent wie möglich zu sein.quelle
Ich betrachte mich nicht als etablierter Entwickler von R-Paketen, habe aber kürzlich den Prozess des Schreibens und Wartens eines Pakets für meine Arbeitsumgebung durchlaufen.
Ich habe zuvor eine Reihe von Skripten geschrieben / gepflegt / aktualisiert, die ich über die
source()
Funktion von Projekt zu Projekt weitergeben würde . Das Endergebnis davon war, dass ich am Ende meist redundante Skripte an verschiedenen Stellen auf unseren Netzlaufwerken hatte. Es war nie klar, wo sich die aktuellsten Skripts befanden. Ich bin seitdem dazu übergegangen, ein Paket mit roxygen zu schreiben / zu pflegen. Es hat mein Leben drastisch vereinfacht und es einfacher gemacht, meine Arbeit mit Kollegen zu teilen.Anhand der oben genannten Kriterien empfehle ich, die von Hadley verfassten Pakete zu überprüfen. Insbesondere halte ich das Durchlesen des devtools-Wikis für sehr hilfreich. Hadleys Code ist gut dokumentiert und einige seiner Pakete verwenden roxygen. Ich denke, dass es viel einfacher ist, ein Dokument für beide R-Funktionen und die R-Dokumentation zu schreiben und zu verwalten, als sie auf zwei Speicherorte aufzuteilen (.R- und .RD-Dateien).
Hadleys Pakete dienen auch einigen ziemlich grundlegenden Konzepten und sind relativ einfach zu deparsen (imho), wenn Sie nach Hinweisen auf die technischen Aspektideen suchen. Ich finde mich dabei, den Plyr- Quellcode zu durchsuchen , wenn ich nach einem Hinweis auf die Sauerstoffdokumentation oder andere grundlegende Aufgaben suche.
quelle
Warum nicht einen empirisch gesteuerten Zufallsstichprobenansatz wählen? Wählen Sie einfach einige aus und sehen Sie, welche für Sie arbeiten.
Scherz beiseite, schauen Sie sich nur ein paar Pakete an, die Sie selbst verwenden und mit denen Sie vertraut sind. Das Herunterladen ist ganz einfach. Wenn Sie es vorziehen, können Sie sie auch über ein Webinterface bei R-Forge, RForge oder Github anzeigen.
Sie werden höchstwahrscheinlich unterschiedliche Pakete für unterschiedliche Ideen erhalten. Einige können Ihnen helfen, wie sie beispielsweise eine Vignette integrieren. Einige können mit kompiliertem Code helfen. Oder Unit-Tests. Oder Sauerstoff. Es gibt ungefähr 2600 von ihnen, warum also besessen von einem einzigen Besten?
quelle
Ein weiterer Ratschlag könnte sein, sich Pakete anzusehen, von denen Sie abhängig sind oder mit denen Sie interagieren, insbesondere, wenn diese einige von Joshua Ulrich erwähnte oder von renommierten Autoren geschriebene Elemente implementieren . Es kann hilfreich sein zu lernen, wie die Dinge auf Ihrem Gebiet gemacht werden, um eine gewisse Kompatibilität sicherzustellen. Oft haben die Leute über bestimmte Probleme nachgedacht, und es ist hilfreich, ihre Lösungsvorschläge zu lesen.
quelle
Ich würde Hadleys Umgestaltungspaket empfehlen. Sie finden die Quelle unter https://github.com/hadley/reshape
quelle