Создайте виньетку для пакета R только 1 раз

#r #package #devtools #roxygen #vignette

#r #пакет #devtools #roxygen #виньетка

Вопрос:

Я разрабатываю пакет на 2 отдельных компьютерах в пути репозитория, которые не идентичны. Когда я вызываю devtools::document() and pkgdown::build_site() , я заметил, что вся виньетка повторно отображается. Проблема в том, что в зависимости от машины повторный рендеринг приводит к ошибкам, поскольку пути различаются на 2 машинах для вызовов функций. Есть ли способ сделать виньетки «статичными», чтобы они никогда не отображались повторно, чтобы, когда я подключусь к другой машине и начну работать с пакетом, он унаследует виньетку, а не перестроит ее?

Ответ №1:

Да, есть — я делаю это в нескольких пакетах, и причин может быть много (локальные различия, которые вы описываете, желание сэкономить время, обеспечение идентичных результатов, …)

По сути, это состоит из двух шагов, и я описываю здесь виньетку в формате pdf, поскольку это тот случай, о котором я заботился.

Сначала вы визуализируете свою виньетку «как обычно» локально и сохраняете ее в пакете. Подкаталог of vignettes/ подойдет. Файл теперь статичен и не будет изменен, потому что R будет работать только на уровне каталога верхнего уровня vignettes/ .

Во-вторых, вы добавляете старомодную виньетку Sweave из нескольких строк, которая включает в себя вашу готовую виньетку pdf в качестве входных данных. Это было впервые описано Марком в этом сообщении в блоге. Также убедитесь, что ваш DESCRIPTION файл настроен для стандартной виньетки Sweave. При такой настройке вам больше не нужно объявлять knitr or RMarkdown , потому что ваш стандартный R CMD ... процесс их больше не использует.

Вы можете посмотреть на мой пакет anytime и его vignettes/ каталог в качестве рабочего примера.

Комментарии:

1. 🙂 Рад слышать, что я делаю чей-то день. У методов есть свои критики, которые утверждают, что виньетки предназначены для тестирования, но, как вы обнаружили, могут быть причины не форсировать запуск. Если это поможет вам, пожалуйста, покажите это, «приняв» ответ (нажмите на галочку) и «проголосовав» за него (нажмите на треугольник, обращенный вверх). Спасибо!