Можно ли использовать не импортированные пакеты в виньетке?

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

В этой виньетке я хотел бы продемонстрировать, как этот пакет может взаимодействовать с otehr пакетами, которые не импортируются с помощью 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?

Ответы

Ответ 1

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

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

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

Ответ 2

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

% \VignetteDepends{...}

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

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

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

"введение" виньетки пакета hyperSpec - пример (чтобы узнать, как он работает на самом деле, вам нужно не только .Rnw, но также несколько определений).