Установка заголовка документа в 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, но это дает синтаксическую ошибку.
Есть ли что-то еще, что я должен попробовать? Спасибо!
Ответы
Ответ 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`
---