从参数在 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
。现在标题保存在一个变量中。希望这对您有所帮助!
我有一个运行良好的 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
。现在标题保存在一个变量中。希望这对您有所帮助!