Установка заголовка документа в Rmarkdown из параметров

У меня есть шаблон Rmarkdown, который хорошо работает, и я его параметризовал, чтобы я мог генерировать варианты одного и того же отчета из разных источников данных. Однако я бы хотел изменить заголовок отчета в каждом конкретном случае. Как я могу это сделать?

Вот заголовок YAML, который у меня есть:

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

Я пытался использовать params=list(title="ASDF") в призыве к rmarkdown::renderи хотя мой код может видеть эту переменную, она не меняет заголовок. Я также пытался использовать r params$title в YAML, но это дает синтаксическую ошибку.

Есть ли что-то еще, что я должен попробовать? Спасибо!

2 ответа

Решение

Попробуйте использовать второй блок метаданных YAML и поместите туда параметризованные метаданные.

Я получил следующий код для работы, как и ожидалось (т.е. создание заголовка документа из списка параметров):

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

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

В документации RMarkdown отмечается, что блоки метаданных YAML объединяются Pandoc. Используйте первый блок для определения набора параметров, а второй - для использования параметров в качестве метаданных. Knitr выполнит код R для интерпретации параметров во втором блоке. Затем Pandoc объединит блоки метаданных вместе.

Обновление (2017):

Это может быть выполнено в одном блоке, например так:

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

Это работает, потому что название идет после params определение. Я поместил кавычки вокруг встроенного кода R, чтобы предотвратить "ошибки сканера".

Это более упрощенный подход к проблеме динамического заголовка:

Отсоедините заголовок от верхнего объявления следующим образом:

Из этого:

    ---
    title: Sample_Title
    output: pdf_document
    --- 

К этому:

    ---
    output: pdf_document
    --- 

    <r code chunks>

    ---
    title: `r name_of_title_variable`
    ---

Внутри фрагментов кода R объявите name_of_title_variable. Теперь заголовок находится внутри переменной. Надеюсь это поможет!

Добавление этого ответа, так как это помогает сделать динамические заголовки уценки R.

Просто используйте! R, за которым следует определенное имя объекта (test_title в случае ниже), чтобы сделать заголовок динамическим.

---
output: pdf_document
params:
set_title: !r test_title
---
---
title: `r params$set_title`
---
Другие вопросы по тегам