Мне интересно, есть ли хитрость, чтобы поместить текущую дату во внешнюю оболочку YAML .rmd
документа для обработки knitr
и rmarkdown
пакета. Я имел обыкновение иметь следующую строку в верхней части моих вики-страниц,
_baptiste, `r format(Sys.time(), "%d %B, %Y")`_
и он будет преобразован в крещение, 3 мая 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
Любое решение?
r
yaml
knitr
r-markdown
Батист
источник
источник
!expr
, напримерdate: !expr Sys.time()
, но теперь это тоже не работает.Ответы:
Это немного сложно, но вам просто нужно сделать
date
поле действительным в YAML, заключив в кавычки выражение R, например:Тогда ошибка синтаксического анализа исчезнет, и в выходных данных уценки будет сгенерирована дата, чтобы Pandoc мог использовать значение из
Sys.time()
.источник
includes: after_body: [ ... ]
поскольку действительный YAML будет только строкой имени файла ... Так что нет возможностиincludes: "`r list.files(...)`"
?.md
файле, если у меня естьkeep_md: true
в заголовке YAML. Любое решение для этого?date: "`r format(Sys.time(), '%B %d, %Y')`"
.r format(Sys.time(), '%d\\\\. %B %Y')
Просто следите за @Yihui. Как ни странно, я обнаружил, что:
работает лучше чем:
В последнем случае RStudio выбирает изменение внешних кавычек на
'
любое переключение между выводом HTML и PDF и, таким образом, нарушение кода.источник
Или просто одинарные кавычки двойные кавычки и наоборот, это хорошо работает.
источник
Один из обходных путей - использовать
brew
пакет и написать свойbrew
шаблон YAML в качестве шаблона.Теперь вы можете использовать
brew_n_render
функцию, которая будет предварительно обрабатывать документ с использованием,brew
а затем запускать черезrmarkdown
.Чтобы заставить это работать с
KnitHTML
кнопкой в RStudio, вы можете написать собственный формат вывода, который будет автоматически использоватьсяbrew
в качестве препроцессора. Использованиеbrew
для предварительной обработки гарантирует, чтоknitr
фрагменты кода в вашем документе не будут затронуты на этапе предварительной обработки. В идеалеrmarkdown
пакет должен предоставлять метаданные в своем API и позволять пользователям запускать их через пользовательские функции.источник
или, возможно, что-то вроде следующего, см. R Markdown Parameterized Reports
источник
По той же проблеме для меня. Я решаю это с помощью этого кода.
Обновление Вы также можете использовать другой формат.
Лучший.
источник
Я был укушен этим сегодня. я имел
и получил более-менее ту же ошибку, что и ОП, но только при вязании на слово. Вязание в PDF было хорошо, прежде чем я пытался вязать в Word. Впоследствии это тоже не сработало.
Позиция 31 - первый знак%
Заменить это на
как советовал MLaVoie, работал нормально.
Я понятия не имею, почему это произошло, и у меня нет времени копаться - отчеты заканчиваются.
источник