从参数在 Rmarkdown 中设置文档标题

Setting document title in Rmarkdown from parameters

我有一个运行良好的 Rmarkdown 模板,我已经对其进行了参数化,因此我可以从不同的数据源生成同一报告的变体。但是,我想在每种情况下更改报告的标题。我怎么做?

这是我目前拥有的 YAML header:

---
title: "My Title"
author: "Me, Inc."
date: "August 4, 2015"
output: pdf_document
params:
  title: default
---

我已经尝试在对 rmarkdown::render 的调用中使用 params=list(title="ASDF"),尽管我的代码可以看到该变量,但它不会更改标题。我也试过在 YAML 中使用 r params$title,但这会导致语法错误。

还有什么我应该尝试的吗?谢谢!

尝试使用第二个 YAML 元数据块,并将参数化的元数据放在那里。

我使以下代码按预期工作(即,从参数列表生成文档标题):

---
output: html_document
params: 
    set_title: "My Title!"
---

---
title: `r params$set_title`
---

RMarkdown documentation 指出 YAML 元数据块由 Pandoc 合并。使用第一个块定义参数集,第二个块将参数用作元数据。 Knitr 将执行 R 代码来解释第二个参数 block.Then Pandoc 会将元数据块合并在一起。

更新 (2017):

这可以在一个块中完成,如下所示:

---
output: html_document
params: 
    set_title: "My Title!"
title: "`r params$set_title`"
---

之所以有效,是因为标题出现在 params 定义之后。我在 in-line R 代码周围加上引号以防止 "Scanner errors".

添加此答案有助于使 R markdown 标题动态化。

只需使用 !r 后跟定义的 object 名称(在下面的示例中为 test_title)即可使标题动态化。

---
output: pdf_document
params:
set_title: !r test_title
---
---
title: `r params$set_title`
---

这是一种更简化的动态标题挑战方法。

像这样从顶部声明中解耦标题:

来自:

---
title: "Sample Title"
output: pdf_document
---

为此:

---
output: pdf_document
--- 

```{r}
title_var <- "Sample Title"
```

---
title: `r title_var`
---

在 R 代码块中,声明 title_var。现在标题保存在一个变量中。希望这对您有所帮助!