Как включить файл RMarkdown в r-пакет?

Я нахожусь в процессе создания пакета в R, и я также хочу включить R Markdown файл. Этот шаблон RMarkdown содержит функции из моего пакета и отображается в html-документе через knitr.

Цель состоит в том, чтобы регулярно запускать функцию (через cronjob), которая визуализирует файл RMarkdown, чтобы создавать еженедельные отчеты.

Как можно добавить такие файлы в пакет R (например,.Rmd) и ссылаться на .Rmd при вызове функции для визуализации указанного шаблона, особенно если использование use_data(myrmarkdown.Rmd) не даст желаемого результата.

Ответ 1

Когда вы создаете пакет R, у вас будет дерево каталогов, содержащее (среди прочего) в корневом каталоге пакета: DESCRIPTION, NAMESPACE и каталог R/. Если у вас также есть каталог inst/, то все содержимое этого каталога дословно копируется в каталог вашего пакета, за исключением inst/.

Например, если ваш каталог пакета выглядит так:

+- DESCRIPTION
+- NAMESPACE
+- inst/
|  \- rmd/
|     \- file.Rmd
\- R/
   +- file1.R
   +- file2.R
   \- file3.R

Затем, когда вы соберете пакет и установите его, вы найдете следующее в своей библиотеке пакетов:

+- DESCRIPTION
+- INDEX
+- NAMESPACE
+- rmd/
|  \- file.Rmd
\- R/
   +- packagename
   +- packagename.rdb
   \- packagename.rdx

(Другие файлы/каталоги создаются во время процесса, я игнорирую их для простоты.)

Последняя информация, которую вам нужно знать, это "как получить доступ к этому файлу после его установки?" Поскольку некоторые системы устанавливают библиотеку R в разные каталоги, и, кроме того, пользователи часто устанавливают пакеты в личной библиотеке R, вы не можете априори знать, где искать Enter system.file:

system.file("rmd", "file.Rmd", package = "packagename")
## [1] "c:/R/R-3.1.3/library/packagename/rmd/file.Rmd"

Это можно использовать для всего файла Rmd. Я использую его для специфичных для компании шаблонов для документов, представленных в Rmd. То есть я ищу "включаемые" файлы, чтобы персонализировать LaTeX, чтобы отображаемый PDF имел верхние и нижние колонтитулы и стилизовался так, как мы хотим. Этот шаг требует написания функции, которая заменяет pdf_document (например) в заголовке Rmd YAML, но это хорошо описано на rmarkdown.rstudio.com.