2016-06-13 74 views
4

在RMarkdown,我似乎能夠創造「一些」在YAML頭動態變量,而不是爲別人:[R降價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')` 
--- 

回答

3

我不知道,如果模板選項可以在.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)) 
+0

完美,正是我需要的。在實驗後,我還應該說,如果'pdf_document(...)'優先於'pdf_document'(即函數優先於字符串),那麼函數版本將覆蓋YAML頭中指定的任何內容。 –