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

4

一般问题

给定一个提供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 的文档仅描述了模板存储的位置,但没有提供程序化列出它们的示例。


1
有一个内部函数可以列出所有模板目录,其方法与下面的解决方案相同。rmarkdown:::list_template_dirs() - Ritchie Sacramento
2个回答

2

目录列表

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

虽然这样可以工作,但我觉得它相当不令人满意,并且希望有一个专门的函数来处理这个问题。但也许我高估了以编程方式处理模板的需求。


1

available_templates()

rmarkdown v2.12 开始,现在有了一个导出的函数。例如:

rmarkdown::available_templates("reprex")

请查看 v2.12 发布说明

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接