Как перечислить все шаблоны R Markdown в пакете?

#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")
 

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