R Quick Tip: parameter re-use within rmarkdown YAML
Ever wondered how to make an rmarkdown title dynamic? Maybe, wanted to use a parameter in multiple locations? Maybe wanted to pass through a publication date? Advanced use of YAML headers can help!
Normally, when we write rmarkdown, we might use something like the basic YAML header that the rmarkdown template gives us.
---
title: "My report"
date: "18th April, 2017"
output: pdf_document
---
You may already know the trick about making the date dynamic to whatever date the report gets rendered on by using the inline R execution mode of rmarkdown to insert a value.
---
title: "My report"
date: "`r Sys.Date()`"
output: pdf_document
---
What you may not already know is that YAML fields get evaluated sequentially so you can use a value created further up in the params
section, to use it later in the block.
---
params:
dynamictitle: "My report"
reportdate: !r Sys.Date()
output: pdf_document
title: "`r params$dynamictitle`"
date: "`r params$reportdate`"
---
By doing this, you can then pass parameter values into the render()
function when you want to generate a report.
rmarkdown::render("MWE.Rmd",
params=list(dynamictitle="New",
reportdate=Sys.Date()-1)
)
Parameter re-use within rmarkdown enables you to dynamically generate vital metadata for the report and use values in multiple places within the document. Very handy!