Текущая дата YAML в rmarkdown
мне интересно, есть ли трюк, чтобы поместить текущую дату в фронт ЯМЛА-дело a .rmd документ для обработки knitr и rmarkdown пакета. Раньше у меня была следующая строка в верхней части моих вики-страниц,
_baptiste, `r format(Sys.time(), "%d %B, %Y")`_
и он будет преобразован в Батист, 03 мая 2014 в выводе html. Теперь я хотел бы воспользоваться расширенной оболочкой pandoc, предоставленной rmarkdown, но наличие кода r в заголовке YAML не похоже на работа:
---
title: "Sample Document"
output:
html_document:
toc: true
theme: united
date: `r format(Sys.time(), "%d %B, %Y")`
author: baptiste
---
Error in yaml::yaml.load(front_matter) :
Scanner error: while scanning for the next token at line 6, column 7
found character that cannot start any token at line 6, column 7
Calls: <Anonymous> ... output_format_from_yaml_front_matter ->
parse_yaml_front_matter -> <Anonymous> -> .Call
любой обходной путь?
6 ответов:
Это немного сложно, но вам просто нужно сделать
dateполе допустимо в YAML путем цитирования встроенного выражения R, напримерdate: "`r format(Sys.time(), '%d %B, %Y')`"тогда ошибка разбора исчезнет, и дата будет сгенерирована в выводе markdown, чтобы Pandoc мог использовать значение из
Sys.time().
просто следим за @Yihui. Как ни странно, я обнаружил, что:
'`r format(Sys.Date(), "%B %d, %Y")`'работает лучше, чем:
"`r format(Sys.Date(), '%B %d, %Y')`"для последнего RStudio выбирает изменить внешние кавычки на
'всякий раз, когда переключение между HTML и PDF вывода и, таким образом, нарушение кода.
или просто одинарные кавычки в двойные кавычки и наоборот, это хорошо работает.
--- title: "Sample Document" output: html_document: toc: true theme: united date: '`r format(Sys.time(), "%d %B, %Y")`' author: baptiste ---
один обходной путь заключается в использовании
brewупакуйте и напишите ваше дело фронта ЯМЛ какbrewшаблон.--- title: "Sample Document" output: html_document: toc: true theme: united date: <%= format(Sys.time(), "%d %B, %Y") %> author: baptiste ---теперь вы можете использовать
brew_n_renderфункция, которая будет предварительно обрабатывать документ с помощьюbrewа потом бежать черезrmarkdown.brew_n_render <- function(input, ...){ output_file <- gsub("\.[R|r]md$", ".html", input) brew::brew(input, 'temp.Rmd'); on.exit(unlink('temp.Rmd')) rmarkdown::render('temp.Rmd', output_file = output_file) }чтобы сделать эту работу с
KnitHTMLкнопка в RStudio, вы можете написать пользовательский формат вывода, который будет автоматически использоватьbrewкак препроцессор. Используяbrewдля предварительной обработки гарантирует, чтоknitrкод куски в документе остаются нетронутыми на этапе предварительной обработки. В идеале,rmarkdownпакет должен предоставлять метаданные в своем API и позволять пользователям запускать его через пользовательскую функцию.
или, возможно, что-то вроде следующего, см. R Markdown Параметризованные Отчеты
params: reportDate: input: date label: 'Report Date:' value: as.POSIXct(Sys.Date())
для той же проблемы для меня. Я решаю ее с помощью этого кода .
--- title: "bla bla" author: "My name" date: \`r format(Sys.Date(), "%B %d, %Y")`\ output: html_document ---обновление Вы также можете использовать другой формат .
--- title: "bla bla" author: "My name" date: \`r format(Sys.Date(), "%m %d,%Y")`\ output: html_document ---лучшие.

Comments