Можно ли использовать не импортированные пакеты в виньетке?
Я пишу виньетку для одного из моих пакетов.
В этой виньетке я хотел бы продемонстрировать, как этот пакет может взаимодействовать с 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, но также несколько определений).