Использование внешних пакетов в RMD как часть пакета R - PullRequest
0 голосов
/ 05 апреля 2020

КОНТЕКСТ

Я работаю над пакетом R с несколькими RMD, чтобы продемонстрировать различные компоненты, т.е. подробный пример, теория и др. c. RMD хранятся в экземпляре файла inst в соответствии с рекомендациями, и у меня есть функции, позволяющие скопировать их в рабочий каталог пользователя, чтобы они могли взаимодействовать и экспортировать контент из примеров.

ISSUE

Я хочу, чтобы один из этих файлов RMD использовал две библиотеки, одна из которых также используется в примере Roxygen2 (другая - нет). Ни одна библиотека не нужна для функциональности пакета как такового, но:

  1. Для первого пакета для ввода требуется несколько переменных (которые я хочу показать) и одна из переменных Необходимость будет трудно вычислить без очень специализированной функции, которую можно найти в другом пакете. Я не думаю, что в рамках пакета реализована эта функциональность (и если бы это было так, это был бы просто слегка настроенный псевдоним внешней функции пакета, что я не считаю хорошей практикой).

  2. Для второго пакета это пакет boot. Я просто хочу показать пример начальной загрузки доверительных интервалов, используя мой пакет. Это не обязательно, но полезно, так как участвуют стохастические процессы c.

ВОПРОС

Что было бы неплохо для включения этих пакетов в мой файл RMD. Очевидно, что для того, что в примере с Roxygen2, я бы нуждался в этом в качестве предлагаемого пакета, но другой, похоже, технически не требует его.

Должен ли я перечислить их как предлагаемые пакеты? Если я это сделаю, я должен добавить проверки существования в файл RMD, чтобы убедиться, что они есть у пользователя, или я должен позволить им выяснить это самостоятельно?

Заранее спасибо!

1 Ответ

1 голос
/ 05 апреля 2020

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

Я не уверен, где вы увидели рекомендацию о том, что вы помещаете файлы Rmd в inst ; вероятно, имеет смысл вместо этого структурировать их как виньетки и поместить их в каталог vignettes. Это стандартное место для размещения подобной документации.

Обычно нет необходимости копировать их в рабочий каталог (и это обычно считается плохой практикой, если вы не делаете это только после запроса и не топать по собственным файлам пользователя). Вы можете использовать system.file("doc/something.Rmd", package = "yourPackage") для доступа к ним оттуда без копирования.

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