You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何列出R包中所有可用于rmarkdown::draft的R Markdown模板

解决方案

实现原理

R Markdown官方约定,所有R包提供的模板均存储在包安装路径的rmarkdown/templates子目录下,每个合法模板对应一个独立子目录,且目录下必须包含template.yaml配置文件,子目录的名称就是可传入rmarkdown::draft的template_name参数合法取值。

通用实现代码

你可以直接使用以下自定义函数获取任意R包的所有合法R Markdown模板名称:

list_rmd_templates <- function(pkg) {
  # 定位包内的模板存储根路径
  template_root <- system.file("rmarkdown", "templates", package = pkg)
  if (template_root == "") {
    warning(paste("包", pkg, "未提供任何R Markdown模板"))
    return(character(0))
  }
  # 列出所有一级子目录,过滤掉无配置文件的非模板目录
  all_subdirs <- list.dirs(template_root, full.names = TRUE, recursive = FALSE)
  valid_templates <- Filter(function(x) file.exists(file.path(x, "template.yaml")), all_subdirs)
  # 提取目录名作为模板名称返回
  return(basename(valid_templates))
}

示例:获取reprex包的所有模板

直接将包名传入上述函数即可:

list_rmd_templates("reprex")

返回结果为两个模板名称,和RStudio GUI中展示的模板数量完全一致。

补充说明

  • 拿到合法模板名后即可直接传入rmarkdown::draft调用,示例如下:
rmarkdown::draft("my_reprex.Rmd", template = "reprex", package = "reprex")
  • 该方法完全遵循rmarkdown官方的模板存储规范,适用于所有遵循规范开发的R包。

内容的提问来源于stack exchange,提问作者merv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:24:03