2010-08-02 22 views
16

Ich habe eine Bibliothek namens Blotter in mein R-Skript aufgenommen, die einen Fehler enthält. Gibt es eine einfache Möglichkeit für mich, die Quelle zu bearbeiten, um das Problem zu beheben?So bearbeiten und debuggen Sie R-Bibliotheksquellen

+1

Mögliches Duplikat von [r modifizieren und neu aufbauen] (https://stackoverflow.com/questions/34800331/r-modify-and-rebuild-package) – Scarabee

Antwort

16

Schauen Sie sich die Funktionen trace und browser an, sie sind die grundlegenden Werkzeuge in R zum Debuggen. Sagen Sie bitte die Quelle der Funktion foo, dann sagen

trace("foo",edit=TRUE) 

öffnet sich die Quelle foo im Editor bearbeiten möchten, für Sie zu ändern. Dies dient jedoch zum interaktiven Debugging. Die Quelldateien in den Paketen werden nicht geändert. Sobald Sie den Fehler gefunden haben, müssen Sie die Paketquelldateien ändern, damit die Änderung dauerhaft ist.

+0

Hallo! Ich habe ein Paket heruntergeladen und kenne die Funktion, die ich bearbeiten muss - ich kann sie nicht unter allen Dateien finden. Was ist der richtige Weg, dies zu tun? Könnten Sie mir in die richtige Richtung zeigen? – vagabond

9

Ein solches Merkmal ist in der Entwicklungsversion von R (16. Juli 2010) umgesetzt:

Eine neue Anlage zu r-devel hinzugefügt wurde von den Autoren der Pakete zum Experimentieren.

Die Idee besteht darin, modifizierten Code aus der Paketquelle in das laufende Paket ohne Neuinstallation einzufügen. So kann man in einer schnellen Schleife ändern, testen, ändern, etc.

Der Mechanismus dient zum Auswerten einiger Quellcode-Dateien und gibt ein Umgebungsobjekt zurück, das eine Momentaufnahme des Codes darstellt. Von dieser Umgebung können Funktionen und Methoden in die Umgebung des Pakets in der aktuellen Sitzung eingefügt werden. Die Einfügung verwendet den trace() Mechanismus, so dass der ursprüngliche Code wiederhergestellt werden kann.

Die einstufige Version ist:

insertSource("mySourceFile.R", package = "myPackage", functions = "foo")

diesen Beitrag sehen für weitere Details: Inserting and testing revised functions in a package

3

Ihre Frage Gibt es eine einfache Möglichkeit für mich, um die Quelle zu bearbeiten, um versuchen und debuggen das Problem? hat die offensichtliche Antwort: Verwenden Sie die Quelle, Luke!

blotter ist ein Paket auf R-Forge von dem Sie blotter sources here erhalten können. Das ist die übliche Art, auf Open Source zu schauen und es möglicherweise zusammen mit einem Bugfix zu unterstützen.

+1

Ok, wie mache ich das? Normalerweise kann ich einfach "Bibliothek" nennen, was ich nicht mit den Quellen machen könnte. Ich habe die Quelle heruntergeladen, aber es gibt fast 40 Dateien. Leite ich "Quelle" einzeln auf jedem von ihnen, um sie in mein Skript zu bekommen? –

+3

@Ben McCann Angenommen, es gibt keinen C- oder FORTRAN-Code, können Sie R-Dateien, 'source()' daraus extrahieren und von dort aus arbeiten (jedes Mal, wenn Sie die Datei ändern, müssen Sie sie kopieren oder in R kopieren). Sobald alles funktioniert, können Sie die Dateien zurück in die Paket-Binärdatei kopieren und sie erstellen. Ich habe eine schnelle Schritt-für-Schritt-R-Paket-Erstellung in einem Blog-Post hier beschrieben: http://danganothereerror.wordpress.com/2010/07/23/building-an-r-package-under-windows-without- cc-or-fortran-code/ –

Verwandte Themen