Текущая дата YAML в rmarkdown

мне интересно, есть ли трюк, чтобы поместить текущую дату в фронт YAML-вопрос .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
---

теперь вы можете использовать


или, возможно, что-то вроде следующего, см. R Параметризованные Отчеты Markdown

params:
  reportDate:
    input: date
    label: 'Report Date:'
    value: as.POSIXct(Sys.Date())

enter image description hereдля той же проблемы для меня. Я решаю его с помощью этого кода .

---
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
---

лучшие.