список ссылок "params" в pandoc_args (rmarkdown) - PullRequest
0 голосов
/ 14 апреля 2019

Я бы хотел параметризовать имя выходного файла в разделе output блока yaml rmarkdown.Ниже я показываю некоторые вещи, которые я пробовал, и как они потерпели неудачу (см. Закомментированные строки).

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)

1 Ответ

0 голосов
/ 15 апреля 2019

Я не уверен, как (или если) значения параметров можно использовать для указания 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.

...