.rmd
처리 할 문서 knitr
와 rmarkdown
패키지 의 YAML 전면에 현재 날짜를 입력하는 트릭이 있는지 궁금 합니다. 예전에 위키 페이지 상단에 다음 줄이있었습니다.
_baptiste, `r format(Sys.time(), "%d %B, %Y")`_
html 출력으로 2014 년 5 월 3 일 baptiste 로 변환됩니다 . 이제는에서 제공하는 고급 pandoc 래퍼를 활용하고 싶지만 rmarkdown
YAML 헤더에 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)
}
이 작업을하기 위해 KnitHTML
RStudio 버튼 전처리기로 자동 사용되는 사용자 정의 출력 형식을 작성할 수 있습니다 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의 조언에 따라 정상적으로 작동했습니다.
왜 이런 일이 일어 났는지 전혀 알지 못하고 파고 갈 시간이 없습니다.