2015-06-16 3 views
5

Я пишу пакет R, и я хотел бы использовать одну функцию из другого пакета (plotKML). Этот внешний пакет имеет так много зависимостей, что я не хочу, чтобы мои пользователи были загружены и т. Д. Если я использую importFrom(plotKML, readGPX) в файле NAMESPACE, он загрузит все plotKML в пространство имен и загрузит все зависимости, которые я не хочу.Импорт одной функции в пакет R (без импорта)

Итак, вопрос заключается в следующем: целесообразно ли копировать код для одной функции, которая мне нужна (чтобы все зависимости в этой функции были включены)? Если да, то что подходит для атрибуции/документации - копирую ли я документацию из оригинала?

Существует большое обсуждение этой проблемы в this post, и ответ Брайана Диггса очень полезен. Но он заканчивается словами: «Для вашего примера вам может быть лучше скопировать код для memisc :: описать в ваш пакет, хотя этот подход имеет свои проблемы и оговорки», поэтому я остаюсь с некоторой неопределенностью относительно того, какие проблемы и насколько это уместно с точки зрения атрибуции.

+0

Выполняется ли код для этой функции без зависимостей? – Dason

+0

Функция зависит от некоторых функций в пакете XML, которые мне нужно импортировать в любом случае, поэтому никаких проблем. В противном случае он не требует функций из любого другого пакета, указанного в импорте (требуется почти 20 пакетов!), См. [Здесь] (http://cran.r-project.org/web/packages/plotKML/index.html) для список, который требует plotKML. – ZRoss

+0

Я бы предположил, что большинство ваших пользователей установили хотя бы половину пакетов, из которых в любом случае импортируется plotKML. – Roland

ответ

3

Вопросы относительно соответствующей атрибуции, вероятно, лучше всего решить, связавшись напрямую с автором пакета. Как отмечено в комментариях выше, этот пакет, как представляется, использует GPL-3, что должно означать, что вы можете включить функцию в свой пакет, но ваш пакет также должен быть лицензирован GPL-3. (Как всегда, вероятно, никто здесь не является адвокатом, так что вам нужно проверить ...)

Первичный недостаток копирования только той функции, в которой вы нуждаетесь, заключается в том, что тогда вы несете ответственность за ее поддержание. Это, вероятно, также означает поддержание его таким образом, чтобы он синхронизировался с исходной версией от plotKML. В зависимости от пакета, окружающего кода и того, как часто он обновляется, он может быть довольно простым или может быть ужасным.

Смежные вопросы