我想知道是否有一种技巧可以将当前日期放在.rmd文档的YAML前端,由knitr和rmarkdown包处理。我曾经在我的维基页面顶部有这样一行字,

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

并且它将在html输出中转换为baptiste, 03 May, 2014。现在,我想利用rmarkdown提供的高级pandoc包装器,但在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

有解决方案吗?


当前回答

对我来说同样的问题。我用这个代码来解决它。

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

最好的

其他回答

或者,可能类似于下面的内容,请参阅R Markdown参数化报告

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

最好的

这有点棘手,但您只需要通过引用内联R表达式使日期字段在YAML中有效,例如。

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

然后解析错误将消失,日期将在markdown输出中生成,这样Pandoc就可以使用Sys.time()中的值。

或者,如果您使用新的格式quarto https://quarto.org。你可以在.qmd文件的yaml头文件中这样做。

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

关于格式化,请在这里检查格式化选项。

举个例子,

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

或者单引号,双引号,反之亦然,这很好。

---
title: "Sample Document"
output:
  html_document:
    toc: true
    theme: united
date: '`r format(Sys.time(), "%d %B, %Y")`'
author: baptiste
---