#r #r-markdown
Вопрос:
Общая проблема
Учитывая пакет, предоставляющий шаблоны уценки R, как получить список всех допустимых шаблонов, которые могут быть предоставлены rmarkdown::draft
функции? То есть, для
rmarkdown::draft("my_rmd.Rmd", template_name, some_pkg)
где мы знаем some_pkg
, как можно программно получить допустимые значения для template_name
?
Пример пакета: reprex
В качестве конкретного примера поставщика шаблонов давайте используем пакет reprex. Из графического интерфейса RStudio я знаю, что reprex предоставляет два шаблона. Как можно получить список template_names
для пакета reprex?
То, Что Я Просмотрел
Просматривая rmarkdown::
методы, я не вижу никакой такой функциональности. Поискав вокруг, я нашел только примеры того, как писать и использовать шаблоны, но все в конечном итоге прибегают к показу того, как загрузить шаблон через диалоговое окно графического интерфейса RStudio. Документация rmarkdown::draft
только описывает, где хранятся шаблоны, но не содержит программного примера для их перечисления.
Комментарии:
1. Существует внутренняя функция для перечисления всех каталогов шаблонов, которая использует тот же подход, что и ваше решение ниже.
rmarkdown:::list_template_dirs()
.
Ответ №1:
Список каталогов
Одним из решений является поиск шаблонов в каталоге установки пакета. Для дела reprex у нас есть
## get package root directory
pkg_dir <- system.file(package="reprex")
## list all directory names corresponding to templates
list.dirs(paste0(pkg_dir, "/rmarkdown/templates"), recursive=FALSE, full.names=FALSE)
## [1] "reprex-featureful" "reprex-minimal"
## verify they work
rmarkdown::draft("test", "reprex-minimal", "reprex")
Хотя это работает, я нахожу это довольно неудовлетворительным и ожидаю, что для этого будет выделена специальная функция. Но, возможно, я переоцениваю потребность в программной работе с шаблонами.