Sos*_*sel 29 markdown r knitr r-markdown
使用一个R markdown文件,我想创建不同的输出pdf文档,其中输出文件名应在文档中定义.有没有办法说服markdown以这种方式操纵输出文件名?理想情况下,我想通过r块传递文件名.
Lou*_*dox 40
Knit通过使用未记录的knit钩子重新定义按钮的功能(默认函数称为rmarkdown::render),您可以保持使用RStudio 按钮的简单性和YAML标头的可重复性.output_filerender函数的参数指定文件名,因此通过设置它会覆盖使用与输入文件名相同的前缀的标准行为.
例如,始终输出名为myfile.pdf的文件
knit: (function(inputFile, encoding) { rmarkdown::render(inputFile, encoding = encoding, output_file = file.path(dirname(inputFile), 'myfile.pdf')) })
Run Code Online (Sandbox Code Playgroud)
该函数可以是匿名的一行以及从封装进口,如图这里与slidify.
您可以设置自己的YAML标头(我不知道这通常是否通常建议),可以访问,rmarkdown::metadata$newheader但就我所见,它们似乎无法在此类功能中使用.
至于从R块传递文件名...如果你指的是YAML标题下面的代码块,根据我的经验,我认为不可能(?).标题可以包含内联R命令(单个反引号封装,从开头r),但似乎不适用于此挂钩函数.
相关:
output_fileknit:钩子 /相应的GitHub wiki笔记的更精细使用的这个问题ily*_*lya 23
这几乎就是我做的事情:
rmarkdown::render('my_markdown_report.Rmd',
output_file = paste('report.', Sys.Date(),
'.pdf', sep=''))
Run Code Online (Sandbox Code Playgroud)
我有三个脚本 - 一个拉取数据并处理它,另一个创建图表和表格用于报告.第三个基于markdown文件创建报告.您在上面看到的代码是第三个脚本的一部分
Flo*_*adt 11
我在没有完全理解它的工作原理的情况下玩弄了 Knitr-hook,并遇到了一个丑陋的解决方法。下面的编码似乎可以解决问题。如果有人可以解释它为什么起作用和/或它可以写得不那么难看,那就太好了。
现在我失去了闪亮的输入屏幕,但相信这甚至可以在以后添加。好消息是 R-Studio Knit 按钮仍然可以使用。
请注意,副标题和文件名都是:This Works!即使有空格和感叹号。文件保存为This Works!.pdf
通过将文本分配给对象 pSubTitle 来设置文件名和副标题。请注意,参数仍在 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. ....
Run Code Online (Sandbox Code Playgroud)