R标记-变量输出名称

R标记-变量输出名称,r,markdown,knitr,r-markdown,R,Markdown,Knitr,R Markdown,对于一个R标记文件,我想创建不同的可能输出pdf文档,其中输出文件名应该在文档中定义。有没有办法说服markdown以这种方式操纵输出文件名?理想情况下,我希望通过一个r块传递文件名。这几乎就是我所做的: rmarkdown::render('my_markdown_report.Rmd', output_file = paste('report.', Sys.Date(), '.p

对于一个R标记文件,我想创建不同的可能输出pdf文档,其中输出文件名应该在文档中定义。有没有办法说服markdown以这种方式操纵输出文件名?理想情况下,我希望通过一个r块传递文件名。

这几乎就是我所做的:

rmarkdown::render('my_markdown_report.Rmd',
                  output_file = paste('report.', Sys.Date(), 
                                      '.pdf', sep=''))

我有三个脚本——一个是提取数据并进行处理,另一个是为报表创建图表和表格。第三个是基于标记文件创建报告。上面看到的代码是第三个脚本的一部分

通过使用未记录的Knit钩子重新定义按钮的功能(默认函数称为rmarkdown::render),您可以保持使用RStudioKnit按钮的简单性和YAML标题的再现性。渲染函数的
output\u file
参数指定文件名,因此通过设置它,可以覆盖使用与输入文件名相同前缀的标准行为

e、 g.始终输出名为myfile.pdf的文件

该函数可以是匿名单行程序,也可以从包中导入,如中所示

您可以设置自己的YAML头(我不知道是否通常建议这样做),可以在
rmarkdown::metadata$newheader
下访问,但据我所知,它们似乎在这类函数中不可用

至于从R块传入文件名。。。如果您指的是YAML头下面的代码块,根据我的经验,我认为这是不可能的(?)。标题可以包含内联的R命令(以
R
开头的单个反勾号括起来),但似乎不适用于此钩子函数

相关的

  • Rmarkdown GitHub回购发行-
  • 我写了一篇博文来回答这个问题[无效链接,截至20210216年出售的域名]/对应
我的最佳解决方案(到目前为止)

我在没有完全理解它的工作原理的情况下玩弄了Knitr hook,结果遇到了一个糟糕的解决方法。下面的编码似乎可以做到这一点。 如果有人能解释它的工作原理和/或写得不那么难看,那就太好了

现在我失去了闪亮的输入屏幕,但我相信这甚至可以在以后添加。好的是R-Studio针织按钮仍然可以使用

请注意,字幕和文件名都是:这很有效连空格和感叹号。文件保存为“此操作有效!”!。pdf

通过将文本指定给对象pSubTitle来设置文件名和字幕。 请注意,参数仍在YAML中,但不会产生闪亮的弹出屏幕,因为它们是在Knitr钩子中分配的

---
参数:
副标题:
输入:文本
标签:子标题
值:“我的子标题和文件名”
标题:“参数化的标题和输出文件”
副标题:“r参数$sub_标题”
输出:
pdf\U文件:
保持沉默:错
针织:(
函数(输入文件,编码){

pSubTitle您可以发布您的命令吗?您想“动态”命名文件吗?
paste0(“文件”,x,.pdf”)?
x可能是日期或数据集的名称到目前为止,我使用的是RStudio,执行knit命令时没有实际查看更多细节。但我应该仔细查看ilyas的答案,听起来更清晰。到目前为止,我只使用RStudios knit命令编译一些标记文件。如果我理解正确,您可以使用R命令创建实际的标记文件,甚至使用R命令引导标记的编织?到目前为止,我还不知道这种方法,但我会仔细观察。到目前为止,我还在准备数据并在第一个脚本中处理它,但在第二步,我已经手动创建了标记文件,例如,放置各种数据是的。标记文件本身是一个单独的脚本,它读取数据并将图表和表格放在一起。但是,它是从外部脚本调用的-您也可以从Rstudio启动/执行它,并将创建同名文件。但是,我从单独的脚本调用它,在rmarkdown创建pdf后,生成的文件是cop在rmarkdown::metadata$title@yihuixie中,我可以通过这种方式将params$whatever传递到输出文件名中吗?我的标记使用params$data来提取相关的数据文件,但它看起来在一行代码中不起作用--
params$data not found
。我可以通过
rmarkdown::render(params=list(data=“Oct2017data”),output_file=“Oct2017\u analysis.html”)
,但显然我只想键入一次。@louis maddox“至于从R块传入文件名……如果您指的是YAML头下面的代码块,根据我的经验,我认为这是不可能的(?)。”还是这样吗?非常感谢!
knit: (function(inputFile, encoding) { rmarkdown::render(inputFile, encoding = encoding, output_file = file.path(dirname(inputFile), 'myfile.pdf')) })
---
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. ....