programing

YAML 현재 날짜(rmarkdown)

oldcodes 2023. 6. 8. 22:31
반응형

YAML 현재 날짜(rmarkdown)

현재 날짜를 YAML 앞에 넣는 요령이 있는지 궁금합니다..rmd처리할 문서knitr그리고rmarkdown꾸러미위키 페이지 맨 위에 다음 줄이 있었는데,

   _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)
}

이 기능을 사용할 수 있도록 하려면 다음과 같이 하십시오.KnitHTMLRStudio에서 버튼을 누르면 자동으로 사용할 사용자 지정 출력 형식을 작성할 수 있습니다.brew프리프로세서로서.사용.brew사전 처리를 통해knitr문서의 코드 청크는 전처리 단계에서 변경되지 않습니다.이상적으로,rmarkdown패키지는 API의 메타데이터를 노출하고 사용자가 사용자 정의 함수를 통해 실행할 수 있도록 해야 합니다.

또는 새 형식의 쿼트를 사용하는 경우 https://quarto.org ..qmd 파일의 yaml 헤더에서 이 작업을 수행할 수 있습니다.

——-
title: title of my doc
date: today
format:
  html:
    theme: default
——-

포맷 옵션은 여기에서 확인하십시오.

예를 들어,

date: 03/07/2005
date-format: long

또는 다음과 같은 것을 참조하십시오. 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와 거의 동일한 오류를 얻었지만, 단어에 뜨개질을 할 때만 발생했습니다.워드에 뜨개질을 시도하기 전에는 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의 조언대로, 잘 작동했습니다.

저는 왜 이런 일이 일어났는지 전혀 모르고, 저는 땅을 파러 갈 시간이 없습니다. - 보고서를 끝내야 합니다.

언급URL : https://stackoverflow.com/questions/23449319/yaml-current-date-in-rmarkdown

반응형