[r] rmarkdown의 YAML 현재 날짜

.rmd처리 할 문서 knitrrmarkdown패키지 의 YAML 전면에 현재 날짜를 입력하는 트릭이 있는지 궁금 합니다. 예전에 위키 페이지 상단에 다음 줄이있었습니다.

   _baptiste, `r format(Sys.time(), "%d %B, %Y")`_

html 출력으로 2014 년 5 월 3 일 baptiste 로 변환됩니다 . 이제는에서 제공하는 고급 pandoc 래퍼를 활용하고 싶지만 rmarkdownYAML 헤더에 r 코드가 있으면 작동하지 않는 것 같습니다.

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

해결 방법이 있습니까?



답변

이것은 약간 까다 롭지 만 date인라인 R 표현식을 인용하여 YAML 에서 필드를 유효 하게 만들어야합니다.

date: "`r format(Sys.time(), '%d %B, %Y')`"

그런 다음 구문 분석 오류가 사라지고 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패키지 를 사용하고 YAML 서문을 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)
}

이 작업을하기 위해 KnitHTMLRStudio 버튼 전처리기로 자동 사용되는 사용자 정의 출력 형식을 작성할 수 있습니다 brew. brew전처리에 사용 knitr하면 전처리 단계에서 문서 의 코드 청크가 그대로 유지됩니다. 이상적으로 rmarkdown패키지는 메타 데이터를 API에 노출하고 사용자가 사용자 정의 기능을 통해 메타 데이터를 실행할 수 있도록해야합니다.


답변

또는 다음과 같은 내용은 R 마크 다운 매개 변수화 된 보고서를 참조하십시오.

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

베스트.


답변

나는 오늘 이것에 물렸다. 나는했다

date: "`r format(Sys.Date(), "%B %d, %Y")`"

OP와 거의 같은 오류가 있지만 단어로 뜨개질 할 때만 발생합니다. Word로 편직하기 전에 pdf 편직은 괜찮 았습니다. 그 후에도 작동하지 않았습니다.

Error in yaml::yaml.load(front_matter) :
  Scanner error: while scanning for the next token at line 3, column 31
 found character that cannot start any token at line 3, column 31
Calls: <Anonymous> ... output_format_from_yaml_front_matter ->
       parse_yaml_front_matter -> <Anonymous> -> .Call`

위치 31은 첫 번째 % 부호입니다.

이것을 대체

date: '`r format(Sys.Date(), "%B %d, %Y")`'

MLaVoie의 조언에 따라 정상적으로 작동했습니다.

왜 이런 일이 일어 났는지 전혀 알지 못하고 파고 갈 시간이 없습니다.