猿问

Ymark中的YAML当前日期

我想知道是否有技巧将当前日期放在.rmd要处理的文档knitr和rmarkdown程序包的YAML前端。我曾经在Wiki页面的顶部放置以下行,


   _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

任何解决方法?


眼眸繁星
浏览 1441回答 3
3回答

呼啦一阵风

这有点棘手,但是您只需要date通过引用内联R表达式来使字段在YAML中有效,例如date: "`r format(Sys.time(), '%d %B, %Y')`"然后解析错误将消失,日期将在markdown输出中生成,因此Pandoc可以使用中的值Sys.time()。

慕村225694

一种解决方法是使用该brew程序包,并将您的YAML前端问题写为brew模板。---title: "Sample Document"output:&nbsp; html_document:&nbsp; &nbsp; toc: true&nbsp; &nbsp; theme: uniteddate: <%= format(Sys.time(), "%d %B, %Y") %>author: baptiste---现在,您可以使用一个brew_n_render函数,该函数将使用对文档进行预处理brew,然后通过来运行rmarkdown。brew_n_render <- function(input, ...){&nbsp; output_file <- gsub("\\.[R|r]md$", ".html", input)&nbsp; brew::brew(input, 'temp.Rmd');&nbsp; on.exit(unlink('temp.Rmd'))&nbsp; rmarkdown::render('temp.Rmd', output_file = output_file)}要使用KnitHTMLRStudio中的按钮进行此操作,您可以编写一种自定义输出格式,该格式将自动brew用作预处理程序。使用brew进行预处理可确保knitr在预处理阶段保持文档中的代码块不变。理想情况下,rmarkdown程序包应在其API中公开元数据,并允许用户通过自定义功能运行它。
随时随地看视频慕课网APP
我要回答