2015-06-16 5 views
5

Ich schreibe ein R-Paket und ich möchte eine Funktion aus einem anderen Paket verwenden (plotKML). Dieses externe Paket hat so viele Abhängigkeiten, dass ich nicht möchte, dass meine Benutzer es herunterladen müssen. Wenn ich importFrom(plotKML, readGPX) in der NAMESPACE-Datei verwende, lädt es alle plotKML in den Namespace und lädt alle Abhängigkeiten herunter, die ich nicht haben möchte.Importieren Sie eine Funktion in R-Paket (ohne ImportFrom)

Die Frage ist also: ist es angebracht, den Code für die eine Funktion zu kopieren, die ich brauche (sicherstellen, dass alle Abhängigkeiten in dieser einen Funktion enthalten sind)? Wenn ja, was ist für die Zuordnung/Dokumentation angemessen - kopiere ich die Dokumentation aus dem Original?

Es gibt eine großartige Diskussion dieses Problems in this post und die Antwort von Brian Diggs ist sehr hilfreich. Aber er endet mit "Für Ihr Beispiel wäre es vielleicht besser, den Code für memisc :: describe in Ihr Paket zu kopieren, obwohl dieser Ansatz seine eigenen Probleme und Vorbehalte hat", so bleibt mir etwas Unsicherheit darüber, was die Probleme sind und ob es aus einer Attributionsperspektive angemessen ist.

+0

Funktioniert der Code für diese Funktion ohne die Abhängigkeiten? – Dason

+0

Die Funktion hängt von einigen Funktionen im XML-Paket ab, die ich sowieso importieren muss, also kein Problem. Andernfalls sind keine Funktionen der anderen Pakete erforderlich, die bei den Importen aufgelistet sind (fast 20 Pakete sind erforderlich!), Siehe [hier] (http://cran.r-project.org/web/packages/plotKML/index.html) für die Liste, die plotKML benötigt. – ZRoss

+0

Ich würde annehmen, dass die meisten Ihrer Benutzer mindestens die Hälfte der Pakete installiert hätten, von denen plotKML trotzdem importiert wird. – Roland

Antwort

3

Fragen zur geeigneten Zuordnung würden wahrscheinlich am besten gelöst werden, indem Sie den Autor des Pakets direkt kontaktieren. Wie in den obigen Kommentaren erwähnt, scheint dieses Paket GPL-3 zu verwenden, was bedeuten sollte, dass Sie die Funktion in Ihr Paket aufnehmen können, aber Ihr Paket muss dann auch GPL-3-lizenziert sein. (Wie immer, wahrscheinlich niemand hier ist ein Anwalt, also ist es auf Sie zu überprüfen ...)

Der primäre Nachteil zu kopieren nur die Funktion, die Sie brauchen, ist, dass Sie dann für die Wartung verantwortlich sind. Dies bedeutet wahrscheinlich auch, es so zu pflegen, dass es synchron zur Originalversion von plotKML bleibt. Je nach Paket, umgebendem Code und wie oft es aktualisiert wird, könnte das ziemlich einfach sein oder es könnte schrecklich sein.

Verwandte Themen