Подтвердить что ты не робот

Установка заголовка документа в 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, но это дает синтаксическую ошибку.

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

4b9b3361

Ответ 1

Попробуйте использовать второй блок метаданных 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-кода, чтобы предотвратить "ошибки сканера".

Ответ 2

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

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

Из этого:

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

К этому:

    ---
    output: pdf_document
    --- 

    <r code chunks>

    ---
    title: 'r name_of_title_variable'
    ---

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

Ответ 3

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

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

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