Zastanawiam się, czy jest jakiś sposób na umieszczenie bieżącej daty na froncie YAML .rmd
dokumentu, który ma być przetwarzany, knitr
i rmarkdown
paczki. Kiedyś na górze moich stron wiki znajdował się następujący wiersz:
_baptiste, `r format(Sys.time(), "%d %B, %Y")`_
i zostałby przekonwertowany na baptiste, 3 maja 2014 r. w danych wyjściowych HTML. Teraz chciałbym skorzystać z zaawansowanego opakowania pandoc dostarczonego przez rmarkdown
, ale wydaje się, że kod rw nagłówku YAML nie działa:
---
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
Jakieś obejście?
r
yaml
knitr
r-markdown
baptiste
źródło
źródło
!expr
np.date: !expr Sys.time()
, Ale teraz to też nie działa.Odpowiedzi:
Jest to trochę trudne, ale wystarczy, że
date
pole będzie poprawne w YAML, cytując wbudowane wyrażenie R, np.Następnie błąd parsowania zniknie, a data zostanie wygenerowana w wyniku przeceny, aby Pandoc mógł użyć wartości z
Sys.time()
.źródło
includes: after_body: [ ... ]
ponieważ prawidłowy YAML będzie tylko ciągami nazw plików ... Więc nie ma takiej możliwościincludes: "`r list.files(...)`"
?.md
pliku wynikowym , jeśli mamkeep_md: true
w nagłówku YAML. Jakieś rozwiązanie tego?date: "`r format(Sys.time(), '%B %d, %Y')`"
.r format(Sys.time(), '%d\\\\. %B %Y')
Po prostu śledzę na @Yihui. Co dziwne, odkryłem, że:
działa lepiej niż:
W tym drugim przypadku RStudio decyduje się na zmianę zewnętrznych cytatów za
'
każdym razem, gdy przełącza się między wyjściem HTML a PDF, a tym samym łamie kod.źródło
Lub po prostu cytat podwójny cytat i odwrotnie, to działa dobrze.
źródło
Jednym z obejść tego problemu jest użycie
brew
pakietu i napisanie frontu YAML jakobrew
szablonu.Możesz teraz użyć
brew_n_render
funkcji, która wstępnie przetworzy dokument za pomocą,brew
a następnie uruchomi gormarkdown
.Aby to działało z
KnitHTML
przyciskiem w RStudio, możesz napisać niestandardowy format wyjściowy, który będzie automatycznie używanybrew
jako preprocesor. Użyciebrew
do wstępnego przetwarzania zapewnia, żeknitr
fragmenty kodu w dokumencie pozostaną nietknięte podczas etapu wstępnego przetwarzania. W idealnym przypadkurmarkdown
pakiet powinien ujawniać metadane w interfejsie API i umożliwiać użytkownikom uruchamianie go za pomocą funkcji niestandardowej.źródło
lub, być może, coś takiego: patrz Sparametryzowane raporty R Markdown
źródło
Za ten sam problem dla mnie. Rozwiązuję go za pomocą tego kodu.
Aktualizacja Możesz także użyć innego formatu.
Najlepsza.
źródło
Ugryzło mnie to dzisiaj. miałem
i otrzymywał mniej więcej ten sam błąd co OP, ale tylko podczas dziania z słowem. Knitting do pdf był w porządku, zanim spróbowałem dziać z Wordem. Potem też nie działało.
Pozycja 31 jest pierwszym znakiem%
Zastępując to
zgodnie z zaleceniami MLaVoie, działało dobrze.
Nie mam pojęcia, dlaczego tak się stało, i nie mam czasu na kopanie - raporty do końca.
źródło