Frage Namensräume in R-Paketen


Wie lernen Menschen, einem R-Paket einen Namensraum zu geben? Ich finde die Dokumentation in "R Extensions" gut, aber ich verstehe nicht wirklich, was passiert, wenn eine Variable importiert oder exportiert wird - ich brauche einen Leitfaden für diese Direktiven.

Wie entscheiden Sie, was exportiert wird? Ist es einfach alles, was die pkg ::: var-Syntax nicht wirklich benötigt? Was ist mit Importen?

Erleichtern Importe es, sicherzustellen, dass die Verwendung anderer Paketfunktionen bei der Überlappung von Funktionsnamen nicht verwechselt wird?

Gibt es spezielle Überlegungen für S4-Klassen?

Pakete, die mir vertraut sind und Namensräume wie sp und rgdal benutzen, sind ziemlich kompliziert - gibt es einfache Beispiele, die die Dinge klarer machen könnten?


55
2017-12-06 21:34


Ursprung


Antworten:


Ich habe eine Antwort auf das Devtools-Wiki: http://adv-r.had.co.nz/Namespaces.html


36
2017-12-08 13:37



Wenige Jahre später hier ....

Ich habe die Ergebnisse von Chambers, anderen StackOverflow-Posts und viel Bastelarbeit in R konsolidiert: http://blog.obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff/

Es geht weniger um die Implementierung von NAMESPACE / IMPORTS / DEPENDS und mehr über den Zweck dieser Strukturen. Beantwortet einige Ihrer Fragen.


24
2018-01-06 14:57



Die klarste Erklärung, die ich gelesen habe, ist in John Chambers ' Software für Datenanalyse: Programmierung mit R, Seite 103. Ich kenne keine kostenlosen Online-Erklärungen, die besser sind als die, die Sie bereits im Handbuch der R-Erweiterungen gefunden haben.


14
2017-12-06 22:05



Sie können auch ein einfaches, kleines Paket auswählen und folgen.

Ich schaute halb zufällig nach verdauen welches ist eines meiner kleineren Pakete. Ich lade eine (kleine) dynamische Bibliothek und exportiere ein Symbol, das digest() Funktion. Hier ist der Inhalt der NAMESPACE-Datei:

## package has dynamic library
useDynLib(digest)

## and one and only one core function
export(digest)

Sehen Sie sich den Rest der Quelldateien an und versuchen Sie vielleicht zu lesen Schreiben von R-Erweiterungen neben dem Betrachten des Beispiels, und einige Experimente machen.


11
2017-12-07 01:05



http://www.stat.uiowa.edu/~lukes/R/namespaces/morenames.pdf


1
2017-12-05 00:04