Documenttitel instellen in Rmarkdown van parameters

Ik heb een Rmarkdown-sjabloon die goed werkt, en ik heb deze geparametriseerd zodat ik varianten van hetzelfde rapport uit verschillende gegevensbronnen kan genereren. Ik zou echter in elk geval de titel van het rapport willen wijzigen. Hoe doe ik dat?

Dit is de YAML-header die ik tot nu toe heb:

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

Ik heb geprobeerd params=list(title="ASDF")te gebruiken in de aanroep van rmarkdown::render, en hoewel mijn code die variabele kan zien, het verandert de titel niet. Ik heb ook geprobeerd r params$titlein de YAML te gebruiken, maar dat geeft een syntaxisfout.

Is er nog iets dat ik zou moeten proberen? Bedankt!


Antwoord 1, autoriteit 100%

Probeer een tweede YAML-metadatablok te gebruiken en plaats de geparametreerde metadata daarin.

Ik heb de volgende code laten werken zoals verwacht (d.w.z. een documenttitel produceren uit de lijst met parameters):

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

In de RMarkdown-documentatiewordt opgemerkt dat YAML-metadatablokken worden gecombineerd door Pandoc . Gebruik het eerste blok om de parameterset te definiëren en het tweede om de parameters als metadata te gebruiken. Knitr voert de R-code uit om de parameters in het tweede blok te interpreteren. Vervolgens zal Pandoc de metadatablokken samenvoegen.

Update (2017):

Dit kan worden bereikt in een enkel blok, zoals:

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

Dit werkt omdat de titel na de params-definitie komt. Ik plaats aanhalingstekens rond de in-line R-code om “Scannerfouten” te voorkomen.


Antwoord 2, autoriteit 9%

Dit is een meer vereenvoudigde benadering van de dynamische titeluitdaging.

Koppel de titel als volgt los van de bovenste declaratie:

Hieruit:

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

Hiervoor:

---
output: pdf_document
--- 
```{r}
title_var <- "Sample Title"
```
---
title: `r title_var`
---

Declareer binnen de R-codeblokken title_var. Nu wordt de titel binnen een variabele gehouden. Ik hoop dat dit helpt!


Antwoord 3, autoriteit 3%

Dit antwoord toevoegen omdat het helpt bij het dynamisch maken van R-markdowntitels.

Gebruik gewoon !r gevolgd door de gedefinieerde objectnaam (test_title in het onderstaande geval) om de titel dynamisch te maken.

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

Other episodes