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

如何在RMarkdown文件中引用YAML前置内容?

解决RMarkdown直接引用YAML前置内容的问题

不用折腾params重复定义字段,RMarkdown本身就有更简洁的方法直接读取YAML里的内容。

最直接的方法:用rmarkdown::metadata访问所有YAML字段

rmarkdown::metadata是内置对象,能直接调用YAML前置区里的所有字段,不管是title、author还是output,都能直接取到。

完整示例代码

---
title: This is my title
author: My Name
output: html_document
---

# Main page

```{r}
# 直接读取YAML里的output字段
if (rmarkdown::metadata$output == "html_document") {
  outputtype <- "HTML"
} else {
  outputtype <- "Not HTML"
}

The output type is r outputtype.

### 渲染后效果
> # Main page
> The output type is HTML.

## 处理嵌套的output配置
如果你的`output`字段是带参数的嵌套写法(比如给`html_document`加`toc`选项),直接取`metadata$output`会得到列表结构,这时候可以用`knitr::opts_knit$get('rmarkdown.pandoc.to')`精准获取输出格式:

```yaml
---
title: 带参数的输出示例
author: My Name
output:
  html_document:
    toc: true
    number_sections: true
---

# Main page

```{r}
output_format <- knitr::opts_knit$get('rmarkdown.pandoc.to')
# 这里会返回"html"
outputtype <- if (output_format == "html") "HTML" else "Not HTML"

The output type is r outputtype.

## 其他YAML字段的引用
除了`output`,你还能直接调用其他任意YAML字段,比如:
```{r}
# 获取文档标题
doc_title <- rmarkdown::metadata$title
# 获取作者名
doc_author <- rmarkdown::metadata$author

之后在文档里直接用 r doc_title 或者 r doc_author 就能插入对应内容了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:33:30