2012-08-23 4 views
5

Ich habe einige R-Code für eine Dissertation geschrieben, sich auf einige externe Pakete (z. B. plyr und reshape) und Schreiben ein paar relativ einfache Inline-C++ - Funktionen mit inline und RcppArmadillo.Wie stelle ich sicher, dass R/Rcpp-Code reproduzierbar ist ("distributable")?

Ich möchte sicherstellen, dass es "wie es ist" auf anderen Computern als meinem eigenen (Win64), für Zwecke der Forschung Reproduzierbarkeit durchgeführt werden kann.

Meine Frage: Ich nehme an Code enthalten die erforderlichen Pakete für die Installation, würden die RcppArmadillo (und Rcpp und inline) Pakete ausreichend sein, um die Funktionen in RcppArmadillo geschrieben kompilieren, oder würde der Endanwender benötigen Systempfade ändern zum Kompilieren auf seiner Windows-Maschine? Wenn nicht, ist es möglich/empfohlen, die kompilierten Funktionen von meinem Ende zu speichern und in den R-Code zu integrieren, den ich versende?

Auch im unwahrscheinlichen Fall, dass der Code einige Zeit später ausgeführt werden sollte (ein paar Jahre), ist es ausreichend, eine vollständige R-Installation mit den relevanten Paketen in ihrer aktuellen Version zu integrieren, um den Code zu erstellen " zukunftssicher"?

Ich hoffe, die Frage ist klar.

Antwort

9

Ich denke, Sie meinen, dass Ihr Code "verteilbar" und "ausführbar von jemand anderem" sein soll, was eine geringere Anforderung darstellt. "Reproduzierbar" zu sein bedeutet, dass die vorherige Frage wahr ist, und fügt die Einschränkung hinzu, dass die Ergebnisse identisch sind (bis zu einem Epsilon Ihrer Wahl).

Und die übliche Antwort für "wie kann ich anderen meinen R-Code laufen lassen" ist ein Paket zu erstellen.

Für Rcpp-bezogenen Code, haben wir eine ganze Vignette gewidmet, um Ihr eigenes Paket mit Ihrem Rcpp-Verwendung Kabeljau zu bauen. Die Vignette heißt "Rcpp-Paket".

+0

Danke, mir war der Unterschied zwischen "reproduzierbar" und "verteilbar" nicht bewusst. Wie du wahrscheinlich vermutet hast, meinte ich Letzteres. Ich erwartete halb, dass die Antwort "ein Paket erstellen" sein würde, was für mich scheint, meinen Code ein bisschen zu sehr zu würdigen, aber wenn das die einfachste, am meisten dokumentierte Lösung ist, werde ich das tun. – MatteoS

+0

Btw, danke für 'Rcpp' und' RcppArmadillo' – MatteoS

+0

Ich habe mich für die Unterscheidung von "reproduzierbar" und "verteilbar" entschieden. Ich wusste es auch nicht. –