参考pandoc_args中的“params”列表(rmarkdown)

问题描述 投票:0回答:1

我想在rmarkdown yaml块的输出部分中参数化输出文件名。我在下面展示了一些我尝试过的东西,以及它们是如何失败的(参见注释行)。

params $ outfilename设置正确,但我不知道如何在以后引用它来设置pandoc_args。

我正在使用rmarkdown::render('mydocument.Rmd')来构建输出文件。

这可能吗?谁能指出我做错了什么?

---
params:
  longtitle: "School Data: Aprendo Leyendo Efficacy Study"
  reportdate: !r Sys.Date()
  outfilename: !r paste0("Intelexia-school-data-test-", format(Sys.time(), "%Y%m%d"))

title: "`r params$longtitle`"
date: "`r params$reportdate`"
author: David Braze

output:
  html_document:
    highlight: tango
    pandoc_args:
    - --output
#    - "`r params$outfilename`"  # generates file named "`r params$outfilename`"
#    - `r params$outfilename`  # scanner error
#    - !r `params$outfilename`  # scanner error
#    - !r "params$outfilename"  # generates file named "params$outfilename"
#    - !r params$outfilename  # generates file named "params$outfilename"
#    - !expr params$outfilename # cannot evaluate expression
#    - !expr "params$outfilename" # cannot evaluate expression
#    - params$outfilename # generates file named "params$outfilename"
    - !expr paste0("Intelexia-school-data-", format(Sys.time(), "%Y%m%d"), ".html")
    theme: united
    toc: yes
    toc_depth: 2
    toc_float: yes
---

这是我的会话信息:

R> sessioninfo::session_info()
- Session info -----------------------------------------------------------------------------------
 setting  value                         
 version  R version 3.5.1 (2018-07-02)  
 os       Windows 10 x64                
 system   x86_64, mingw32               
 ui       RTerm                         
 language (EN)                          
 collate  English_United States.1252    
 ctype    Chinese (Simplified)_China.936
 tz       America/New_York              
 date     2019-04-14                    

- Packages ---------------------------------------------------------------------------------------
 package     * version date       lib source        
 assertthat    0.2.1   2019-03-21 [1] CRAN (R 3.5.3)
 cellranger    1.1.0   2016-07-27 [1] CRAN (R 3.5.0)
 cli           1.1.0   2019-03-19 [1] CRAN (R 3.5.3)
 codetools     0.2-16  2018-12-24 [1] CRAN (R 3.5.2)
 crayon        1.3.4   2017-09-16 [1] CRAN (R 3.5.0)
 digest        0.6.18  2018-10-10 [1] CRAN (R 3.5.1)
 dplyr       * 0.8.0.1 2019-02-15 [1] CRAN (R 3.5.3)
 evaluate      0.13    2019-02-12 [1] CRAN (R 3.5.3)
 glue          1.3.1   2019-03-12 [1] CRAN (R 3.5.3)
 htmltools     0.3.6   2017-04-28 [1] CRAN (R 3.5.0)
 knitr       * 1.22    2019-03-08 [1] CRAN (R 3.5.3)
 magrittr      1.5     2014-11-22 [1] CRAN (R 3.5.0)
 memoise       1.1.0   2017-04-21 [1] CRAN (R 3.5.0)
 pillar        1.3.1   2018-12-15 [1] CRAN (R 3.5.2)
 pkgconfig     2.0.2   2018-08-16 [1] CRAN (R 3.5.1)
 purrr         0.3.2   2019-03-15 [1] CRAN (R 3.5.3)
 R6            2.4.0   2019-02-14 [1] CRAN (R 3.5.3)
 Rcpp          1.0.1   2019-03-17 [1] CRAN (R 3.5.3)
 readxl      * 1.3.1   2019-03-13 [1] CRAN (R 3.5.3)
 rlang         0.3.4   2019-04-07 [1] CRAN (R 3.5.3)
 rmarkdown     1.12    2019-03-14 [1] CRAN (R 3.5.3)
 sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 3.5.1)
 skimr       * 1.0.5   2019-02-25 [1] CRAN (R 3.5.3)
 stringi     * 1.4.3   2019-03-12 [1] CRAN (R 3.5.3)
 stringr       1.4.0   2019-02-10 [1] CRAN (R 3.5.3)
 tibble      * 2.1.1   2019-03-16 [1] CRAN (R 3.5.3)
 tidyr         0.8.3   2019-03-01 [1] CRAN (R 3.5.3)
 tidyselect    0.2.5   2018-10-11 [1] CRAN (R 3.5.1)
 withr         2.1.2   2018-03-15 [1] CRAN (R 3.5.0)
 xfun          0.6     2019-04-02 [1] CRAN (R 3.5.3)
 yaml          2.2.0   2018-07-25 [1] CRAN (R 3.5.1)
r-markdown pandoc
1个回答
0
投票

我不确定如何(或者如果)参数值可用于以您希望的方式指定pandoc_args。另一种可以获得所需结果的方法是使用rmarkdown::render()可选参数。

为了做一个更简单的例子,让我们说mydocument.Rmd的内容是:

---
params:
  outfilename: "myfile"
output: html_document
---

The name of the file is `r params$outfilename`

如果您当前对rmarkdown::render("mydocument.Rmd")的调用被替换为:

fname <- paste0("Intelexia-school-data-test-", format(Sys.time(), "%Y%m%d"))
rmarkdown::render(
  "mydocument.Rmd", 
  output_file = paste0(fname, ".html"), 
  params = list(outfilename = fname)
)

然后渲染的文件将被命名为Intelexia-school-data-test-20190415.html,内容为The name of the file is Intelexia-school-data-test-20190415

© www.soinside.com 2019 - 2024. All rights reserved.