Har*_*lan 35 r pandoc r-markdown
我有一个运行良好的Rmarkdown模板,我已对其进行参数化,因此我可以从不同的数据源生成相同报告的变体.但是,我想在每种情况下更改报告的标题.我怎么做?
这是我到目前为止的YAML标题:
---
title: "My Title"
author: "Me, Inc."
date: "August 4, 2015"
output: pdf_document
params:
title: default
---
Run Code Online (Sandbox Code Playgroud)
我已经尝试params=list(title="ASDF")在调用中使用rmarkdown::render,虽然我的代码可以看到该变量,但它并没有改变标题.我也试过r params$title在YAML中使用,但这会产生语法错误.
还有什么我应该尝试的吗?谢谢!
TJ *_*ahr 69
尝试使用第二个YAML元数据块,并将参数化元数据放在那里.
我得到以下代码按预期工作(即,从params列表生成文档标题):
---
output: html_document
params:
set_title: "My Title!"
---
---
title: `r params$set_title`
---
Run Code Online (Sandbox Code Playgroud)
所述RMarkdown文档注意到,YAML元数据块由Pandoc组合.使用第一个块来定义参数集,使用第二个块将参数用作元数据.Knitr将执行R代码来解释第二个块中的参数.然后Pandoc将元数据块合并在一起.
更新(2017年):
这可以在一个块中完成,如下所示:
---
output: html_document
params:
set_title: "My Title!"
title: "`r params$set_title`"
---
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为标题出现在params定义之后.我在内联R代码周围加上引号以防止"扫描程序错误".
小智 5
这是动态标题挑战的一种更简化的方法。
像这样从顶部声明中解耦标题:
由此:
---
title: "Sample Title"
output: pdf_document
---
Run Code Online (Sandbox Code Playgroud)
为此:
---
output: pdf_document
---
```{r}
title_var <- "Sample Title"
```
---
title: `r title_var`
---
Run Code Online (Sandbox Code Playgroud)
在R代码块中,声明title_var。现在,标题保留在变量中。希望这可以帮助!