如何列出包中的所有 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")
虽然这可行,但我发现它相当不令人满意,并希望有一个专门的功能来解决这个问题。但也许我高估了以编程方式使用模板的需求。
一般问题
给定一个提供 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")
虽然这可行,但我发现它相当不令人满意,并希望有一个专门的功能来解决这个问题。但也许我高估了以编程方式使用模板的需求。