如何列出包中的所有 R Markdown 模板?

How to list all R Markdown templates in a package?

一般问题

给定一个提供 R Markdown 模板的包,如何获得可以提供给 rmarkdown::draft 函数的所有有效模板 的列表?也就是说,对于

rmarkdown::draft("my_rmd.Rmd", template_name, some_pkg)

我们知道 some_pkg,如何以编程方式获取 template_name 的有效值?

示例包:reprex

作为模板提供程序的具体示例,让我们使用 reprex 包。从 RStudio GUI 中,我知道 reprex 提供了两个模板。如何获得 reprex 包的 template_names 列表?

我看过的

浏览 rmarkdown:: 方法,我没有看到任何此类功能。四处搜索,我只找到了有关如何编写和使用模板的示例,但最终都采用了展示如何通过 RStudio GUI 对话框加载模板的示例。 rmarkdown::draft 的文档仅描述了模板的存储位置,但未提供用于列出它们的编程示例。

目录列表

一种解决方案是在包的安装目录中搜索模板。对于 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")

虽然这可行,但我发现它相当不令人满意,并希望有一个专门的功能来解决这个问题。但也许我高估了以编程方式使用模板的需求。