Configuración del título del documento en Rmarkdown desde parámetros


Tengo una plantilla Rmarkdown que funciona bien, y la he parametrizado para que pueda generar variantes del mismo informe desde diferentes fuentes de datos. Sin embargo, me gustaría cambiar el título del informe en cada caso. ¿Cómo hago eso?

Aquí está el encabezado YAML que tengo hasta ahora:

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

He intentado usar params=list(title="ASDF") en la llamada a rmarkdown::render, y aunque mi código puede ver esa variable, no cambia el título. También he intentado usar r params$title en el YAML, pero eso da una sintaxis error.

¿Hay algo más que deba intentar? ¡Gracias!

Author: Harlan, 2015-08-06

2 answers

Intente usar un segundo bloque de metadatos YAML y coloque los metadatos parametrizados allí.

Conseguí que el siguiente código funcionara como se esperaba (es decir, produciendo un título de documento de la lista de parámetros):

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

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

La documentación RMarkdown señala que los bloques de metadatos YAML son combinados por Pandoc. Utilice el primer bloque para definir el conjunto de parámetros, y el segundo para utilizar los parámetros como metadatos. Knitr ejecutará el código R para interpretar los parámetros en el segundo bloque.A continuación, Pandoc fusionará los bloques de metadatos.

Actualización (2017):

Esto se puede lograr en un solo bloque, así:

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

Esto funciona porque el título viene después de la definición params. Pongo comillas alrededor del código R en línea para evitar "errores de escáner".

 54
Author: TJ Mahr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-20 16:29:59

Agregar esta respuesta ya que ayuda a hacer que los títulos de R markdown sean dinámicos.

Solo use !r seguido del nombre del objeto definido (test_title en el caso siguiente) para hacer el título dinámico.

---
output: pdf_document
params:
set_title: !r test_title
---
---
title: `r params$set_title`
---
 2
Author: Rishabh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-17 22:06:04