Ich entwickle ein Paket in R
Was ist der beste Weg, um die Funktion zu testen, wenn ich eine bestimmte Funktion oder einen Satz von Funktionen debugge?
Muss ich jedes Mal Source ('function.R') oder R CMD Build verwenden, wenn ich meine Änderungen überprüfen möchte?
(zusätzliches Guthaben für zugeordnete Emacs-Ess-Tastenbindungen)
Siehe auch Ссылка , das einige Tools zur Verfügung stellt, um diese Aufgabe zu vereinfachen.
Wenn Sie beispielsweise Änderungen am Quellcode vorgenommen haben, erstellen, installieren und laden Sie ein Paket mit der Funktion install()
:
devtools macht es auch einfacher:
Vollständiges Paket neu laden:
%Vor%Erstellen oder aktualisieren Sie die Dokumentation mit roxygen2
%Vor% Führen Sie alle Skripte in /inst/test/
:
Build und R CMD-Prüfung:
%Vor% Sehen Sie sich ?insertSource
an, eine neue Funktion in R 2.12.0, plus die anderen Funktionen im Abschnitt Siehe auch dieser Hilfeseite. Überprüfen Sie auch ?assignInNamespace
, wenn Ihr Paket einen Namespace hat.
Das oben Gesagte geht davon aus, dass Sie R-Quellen aktualisieren und debuggen, nicht kompilierten Code.
Ich habe generell die Route source()
verwendet, um neue Versionen von Funktionen zu laden, die ich verbessere / debugge, neben den üblichen R-Debugging-Tools. Aber ich habe noch keine Namespaces in meinen Paketen. Meine Finger haben sich ziemlich an die Tastenbelegung in Emacs gewöhnt, um über die Jahre einen Puffer zu finden.
Vielleicht möchten Sie sich das Paket "mvbutils" ansehen. Ich benutze es, um meine Pakete die ganze Zeit live zu bearbeiten. Ich kann Funktionen und Dokumentation hinzufügen, entfernen und bearbeiten, während das Paket geladen wird, und die Änderungen spiegeln sich sowohl in der geladenen Version, in der installierten Version (also in der nächsten R-Sitzung) und in [wenn ich es erzähle es] im "Quellpaket". Ich baue nur über R CMD neu, wenn ich eine gezippte Version an jemand anderen verteilen möchte. Um Code zu testen, verwende ich das 'debug' Paket, das auf einem geladenen Paket funktioniert.
Ich benutze sogar "mvbutils", um 'mvbutils' zu bearbeiten, was manchmal etwas haarig sein kann.
Die 'mvbutils' Dokumentation könnte wirklich mit einer vollständigen Demo davon in Aktion tun, aber in der Theorie sollte die vorhandene doco Ihnen zeigen, wie man fortfährt.
Ich kann dir nicht mit Emacs helfen, sorry ...
Ich hatte das gleiche Problem und habe es bei der Verwendung von RStudio gelöst.
Im Editor überprüfe ich die Option "Quelle beim Speichern" für meine R-Datei, die die Funktion enthält. Da ich gewohnt bin, meine Datei jedes Mal zu speichern, wenn ich sie bearbeite (eine gute Angewohnheit, denke ich), sind die entsprechenden Funktionen in meinem R-Arbeitsbereich immer auf dem neuesten Stand.