我想在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)
我不确定如何(或者如果)参数值可用于以您希望的方式指定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
。