Загрузка зависимых пакетов с использованием .onLoad - PullRequest
2 голосов
/ 14 марта 2011

Для моего пакета требуется пакет ggplot2, но у меня возникают проблемы с исправлением следующих замечаний, которые я получаю, когда запускаю проверку CMD R.

no visible global function definition for qplot
'library' or 'require' call not declared from: ggplot2

У меня также есть функция .onLoad,

.onLoad <- function(libname, pkgname){
.libPaths("~/RLibrary")
require(ggplot2)
}

Есть предложения по устранению ошибок? Где разместить функцию onLoad?

Спасибо
Сан -

1 Ответ

8 голосов
/ 14 марта 2011

Я не думаю, что вы должны делать это так. Лучше либо сделать ваш пакет зависимым от ggplot2, либо импортировать пространство имен ggplot2. Сделайте в файле DESCRIPTION, добавив Depends: ggplot2, а вторую добавив Imports: ggplot2 в DESCRIPTION и import(ggplot2) в NAMESPACE (или, точнее, с importfrom(ggplot2,"somefunction").

В качестве альтернативы вы можете установить Suggests: ggplot2 в ОПИСАНИИ и указать require("ggplot2") в любых функциях, которые его используют, но мне это очень не нравится.

Смотри также:

http://cran.r -project.org / DOC / Инструкции / R-exts.html # The-описание-файл

РЕДАКТИРОВАТЬ: Чтобы быть немного более ясным. С Depends пакет загружается каждый раз, когда ваш пакет загружается, и все его функции доступны для пользователя.

С помощью Imports вы можете использовать функции пакета, но пакет не загружается, когда ваш пакет не загружен (функции недоступны для пользователя).

При Suggests пакет не загружается при загрузке пакета, и вы не можете использовать его функции. Вам нужно объявить require где-нибудь, чтобы использовать их. По сути, это может быть использовано для пояснения того, что вы используете этот пакет где-то (в примере или около того).

Все зависит от того, как вы хотите, чтобы ваши пользователи могли использовать зависимый пакет, и насколько это важно для вашего пакета. Например, если ваш пакет является внешним интерфейсом, лучше всего использовать ggplot2 Depends, если он выполняет некоторый анализ и имеет функцию построения графика, то Imports лучше всего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...