Установка заголовка документа в 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`
---