【问题标题】:R markdown YAML dynamic variablesR markdown YAML 动态变量
【发布时间】:2016-06-13 04:32:48
【问题描述】:

在 RMarkdown 中,我似乎能够在 YAML 标头中创建“一些”动态变量,但不能为其他变量:

例如,这是可行的:

---
title: 
  "Some Title, `r format(Sys.time(), '%d %B, %Y')`"
...
---

但这不是。

---
...
pdf_document:
    keep_tex: `r 'true'`
---

但这确实(即不是动态的)。

---
...
pdf_document:
    keep_tex: true
---

那么我怎样才能“动态地”将keep_tex 分配给真或假,我想要做的是这样的:

---
...
pdf_document:
    keep_tex: `r getOption('mypackage.keep_tex')`
---

【问题讨论】:

标签: r yaml r-markdown


【解决方案1】:

我不知道是否可以在 .Rmd 文件的 YAML 标头中以编程方式设置模板选项。

作为替代方案,如果您使用rmarkdown::render 来呈现您的文档,您可以指定输出模板(pdf_document),然后以编程方式设置模板选项(例如keep_tex)。

例如,如果您有一个名为“test.Rmd”的 .Rmd 文件,如下所示:

---
title: 
  "Some Title, `r format(Sys.time(), '%d %B, %Y')`"
---

...以及确定是否保留中间 TeX 文件的一些逻辑对象,例如

my_keep <- TRUE

...您可以将输入文件呈现为 PDF 格式并保持 TeX 文件如下:

render(input = "test.Rmd",
       output_format = pdf_document(keep_tex = my_keep))

【讨论】:

  • 完美,正是我需要的。我还应该说,经过实验,如果 pdf_document(...) 优先于 'pdf_document' 使用(即函数优先于字符串),那么函数版本将覆盖 YAML 标头中指定的任何内容。
猜你喜欢
  • 1970-01-01
  • 2019-01-04
  • 2014-03-10
  • 2021-09-19
  • 2014-07-09
  • 2022-08-19
  • 2014-09-02
  • 2023-03-24
  • 2018-04-01
相关资源
最近更新 更多