R Markdown - 变量输出名称
R Markdown - variable output name
使用一个 R markdown 文件,我想创建不同的可能输出 pdf 文档,其中输出文件名应在文档中定义。有没有办法说服降价以这种方式操作输出文件名?理想情况下,我想通过 r 块传递文件名。
这几乎就是我所做的:
rmarkdown::render('my_markdown_report.Rmd',
output_file = paste('report.', Sys.Date(),
'.pdf', sep=''))
我有三个脚本 - 一个提取数据并处理它,第二个创建图表和表格以供报告。第三个基于降价文件创建报告。您在上面看到的代码是第三个脚本的一部分
您可以保持使用 RStudio Knit
按钮的简单性和 YAML header 的可重复性,方法是使用未记录的 knit
挂钩重新定义按钮的功能(默认函数称为是 rmarkdown::render
)。 render 函数的 output_file
参数指定文件名,因此通过设置它,您可以覆盖使用与输入文件名相同的前缀的标准行为。
例如始终输出名为 myfile.pdf
的文件
knit: (function(inputFile, encoding) { rmarkdown::render(inputFile, encoding = encoding, output_file = file.path(dirname(inputFile), 'myfile.pdf')) })
该函数可以是匿名的 one-liner 也可以从包中导入,如 here with slidify 所示。
您可以设置自己的 YAML headers(我不知道这是否通常被建议),可在 rmarkdown::metadata$newheader
下访问,但它们似乎无法在此类中使用据我所知功能。
至于从 R 块传入文件名...如果您指的是 YAML header 下面的代码块,根据我的经验,我认为这是不可能的(?)。 Headers 可以包含内联 R 命令(单个 backtick-enclosed,以 r
开头),但似乎不适用于此挂钩函数。
相关:
- Rmarkdown GitHub 回购问题 — output format-specific
output_file
- 博客post我写了这个问题[无效link,域名出售截至20210216]/对应GitHub wiki notes
我在没有完全理解它的工作原理的情况下使用了 Knitr-hook,并且 运行 变成了一个丑陋的解决方法。下面的代码似乎可以解决问题。
如果有人可以解释它为什么有效,那就太好了 and/or 如果它可以写得不那么难看。
现在我失去了闪亮的输入屏幕,但相信以后甚至可以添加它。好消息是 R-Studio 编织按钮仍然可以使用。
请注意字幕和文件名都是:This Works! 即使带有 space 和感叹号。文件保存为 This Works!.pdf
文件名和副标题是通过将文本分配给 object pSubTitle 来设置的。
请注意,params 仍在 YAML 中,但不会产生闪亮的弹出屏幕,因为它们在 Knitr-hook
中分配
---
params:
sub_title:
input: text
label: Sub Title
value: 'my_Sub_Title_and_File_Name'
title : "Parameterized_Title_and_output_file"
subtitle : "`r params$sub_title`"
output:
pdf_document:
keep_tex: false
knit: (
function(inputFile, encoding) {
pSubTitle <- 'This Works!'
rmarkdown::render(
input = inputFile,
encoding = encoding,
params = list(sub_title = pSubTitle),
output_file = pSubTitle) })
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
This is an R Markdown document. ....
使用一个 R markdown 文件,我想创建不同的可能输出 pdf 文档,其中输出文件名应在文档中定义。有没有办法说服降价以这种方式操作输出文件名?理想情况下,我想通过 r 块传递文件名。
这几乎就是我所做的:
rmarkdown::render('my_markdown_report.Rmd',
output_file = paste('report.', Sys.Date(),
'.pdf', sep=''))
我有三个脚本 - 一个提取数据并处理它,第二个创建图表和表格以供报告。第三个基于降价文件创建报告。您在上面看到的代码是第三个脚本的一部分
您可以保持使用 RStudio Knit
按钮的简单性和 YAML header 的可重复性,方法是使用未记录的 knit
挂钩重新定义按钮的功能(默认函数称为是 rmarkdown::render
)。 render 函数的 output_file
参数指定文件名,因此通过设置它,您可以覆盖使用与输入文件名相同的前缀的标准行为。
例如始终输出名为 myfile.pdf
的文件knit: (function(inputFile, encoding) { rmarkdown::render(inputFile, encoding = encoding, output_file = file.path(dirname(inputFile), 'myfile.pdf')) })
该函数可以是匿名的 one-liner 也可以从包中导入,如 here with slidify 所示。
您可以设置自己的 YAML headers(我不知道这是否通常被建议),可在 rmarkdown::metadata$newheader
下访问,但它们似乎无法在此类中使用据我所知功能。
至于从 R 块传入文件名...如果您指的是 YAML header 下面的代码块,根据我的经验,我认为这是不可能的(?)。 Headers 可以包含内联 R 命令(单个 backtick-enclosed,以 r
开头),但似乎不适用于此挂钩函数。
相关:
- Rmarkdown GitHub 回购问题 — output format-specific
output_file
- 博客post我写了这个问题[无效link,域名出售截至20210216]/对应GitHub wiki notes
我在没有完全理解它的工作原理的情况下使用了 Knitr-hook,并且 运行 变成了一个丑陋的解决方法。下面的代码似乎可以解决问题。 如果有人可以解释它为什么有效,那就太好了 and/or 如果它可以写得不那么难看。
现在我失去了闪亮的输入屏幕,但相信以后甚至可以添加它。好消息是 R-Studio 编织按钮仍然可以使用。
请注意字幕和文件名都是:This Works! 即使带有 space 和感叹号。文件保存为 This Works!.pdf
文件名和副标题是通过将文本分配给 object pSubTitle 来设置的。 请注意,params 仍在 YAML 中,但不会产生闪亮的弹出屏幕,因为它们在 Knitr-hook
中分配---
params:
sub_title:
input: text
label: Sub Title
value: 'my_Sub_Title_and_File_Name'
title : "Parameterized_Title_and_output_file"
subtitle : "`r params$sub_title`"
output:
pdf_document:
keep_tex: false
knit: (
function(inputFile, encoding) {
pSubTitle <- 'This Works!'
rmarkdown::render(
input = inputFile,
encoding = encoding,
params = list(sub_title = pSubTitle),
output_file = pSubTitle) })
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
This is an R Markdown document. ....