Можно ли использовать не импортированные пакеты в виньетке? - PullRequest
19 голосов
/ 28 марта 2012

Я пишу виньетку для одного из моих пакетов.

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

Итак, я помещаю require вызов для использования этих внешних пакетов в моей виньетке, но, конечно, я получаю следующее NOTE при попытке R CMD check пакета:

* checking for unstated dependencies in vignettes ... NOTE
‘library’ or ‘require’ call not declared from: ‘RColorBrewer’

Есть ли способ обойти это, или я должен либо импортировать эти внешние пакеты, либо "подделать" виньетку, используя eval=FALSE?

Ответы [ 2 ]

28 голосов
/ 28 марта 2012

Поместите его в Suggests: вашего DESCRIPTION файла.

Из стр.6 R руководства по расширениям :

В поле «Предложения» используется тот же синтаксис, что и «Зависит», и перечислены пакеты, которые не обязательно нужны.Сюда входят пакеты, используемые только в примерах, тестах или виньетках (см. Раздел 1.4 [Написание виньеток пакетов], стр. 26), и пакеты, загруженные в тело функций.Например, предположим, что пример из пакета foo использует набор данных из пакета bar.Тогда нет необходимости bar использовать foo, если только вы не хотите выполнить все примеры / тесты / виньетки: полезно иметь bar, но не обязательно.Требования к версии могут быть указаны и будут использоваться R CMD check.

4 голосов
/ 28 марта 2012

Кроме того, если виньетка должным образом зависит от этого пакета, должно быть

% \VignetteDepends{...}

заявление в самой виньетке: Sweave, часть II: виньетки на упаковке, R News 3/2 (октябрь 2003 г.), 21 - 24.

Однако, ваш случай, возможно, немного отличается:

Я использую if (require ("pkgxy")) без % \\VignetteDepends{pkgxy} (в любом случае необходимо Suggests: pkgxy в ОПИСАНИИ) для некоторых вещей, которые я хочу показать, но где я не хочу заставлять пользователя устанавливать все предложенные пакеты. Я помещаю флажок в начале виньетки, где я сообщаю, какие из этих пакетов доступны, и если пакет недоступен при сборке виньетки, в виньетку помещается текст «pkgxy, необходимый для этого».

Пример «вводной» виньетки пакета hyperSpec является примером (чтобы узнать, как он на самом деле работает, вам нужны не только .Rnw , но и еще несколько определений ). * * тысяча двадцать-одна

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