Rmarkdown 将输出文件定向到目录中
Rmarkdown directing output file into a directory
我发现了 knitr 函数的一个非常好的技巧 (link),您可以在其中将输出 html 保存到输出文件夹中并使用不同的文件名。
您唯一需要前往 header 的是以下内容:
title: "analysis"
author: "Me"
date: "`r format(Sys.time(), '%d %B, %Y, %H:%M')`"
knit: (function(inputFile, encoding) {
rmarkdown::render(inputFile,
encoding=encoding,
output_file=file.path(dirname(inputFile), out_dir, 'analysis.html')) })
output:
html_document:
number_sections: yes
toc: yes
这对我的 Mac 'sometimes' 非常有效,但有时找不到 out_dir 变量...
我首先想到的是先执行chunks,所以设置了变量...但是这并没有解决问题...
我也重新启动了 R session 但这没有帮助。
最后一步是关闭 R,保存工作区,在重新打开 R 并加载工作区后,它再次运行起来非常棒。
我找不到原来的 post,有人推荐这个技巧...
重现的精确工作流程
打开新项目,在新文件夹中命名为test
创建一个 r markdown 文档
将 header 更改为:
---
title: "Untitled"
author: "Me"
date: "`r format(Sys.time(), '%d %B, %Y, %H:%M')`"
knit: (function(inputFile, encoding) {
rmarkdown::render(inputFile,
encoding=encoding,
output_file=file.path(dirname(inputFile), out_dir, 'analysis.html')) })
output:
html_document:
number_sections: yes
toc: yes
---
```{r write quant output files}
out_dir <- 'test'
if(!file.exists(out_dir)) {
dir.create(out_dir)
}
```
将文档另存为test.Rmd
单击编织按钮(html 现在已从按钮的选项中删除)
这将失败!
关闭项目!
点击保存环境!
打开项目并点击编织!
一切正常。
执行 rm(list=ls()) 之后一切正常
您可以尝试在要 knit
渲染的函数中设置 out_dir
变量:
knit: (function(inputFile, encoding) {
out_dir <- 'test';
rmarkdown::render(inputFile,
encoding=encoding,
output_file=file.path(dirname(inputFile), out_dir, 'analysis.html')) })
我发现写 output-file 名称很麻烦,所以我将 output_file
换成了 output_dir
参数,但保留了其余代码。通过这种方式,我的 Rmarkdown 仍然编织到一个子目录中,但名称为 inputFile
。另外,如果该目录不存在,则创建它
---
title: "title"
author: "gordon freeman"
date: "`r Sys.Date()`"
knit: (function(inputFile, encoding) {
out_dir <- "reports";
rmarkdown::render(inputFile,
encoding=encoding,
output_dir=file.path(dirname(inputFile), out_dir))})
---
我发现了 knitr 函数的一个非常好的技巧 (link),您可以在其中将输出 html 保存到输出文件夹中并使用不同的文件名。
您唯一需要前往 header 的是以下内容:
title: "analysis"
author: "Me"
date: "`r format(Sys.time(), '%d %B, %Y, %H:%M')`"
knit: (function(inputFile, encoding) {
rmarkdown::render(inputFile,
encoding=encoding,
output_file=file.path(dirname(inputFile), out_dir, 'analysis.html')) })
output:
html_document:
number_sections: yes
toc: yes
这对我的 Mac 'sometimes' 非常有效,但有时找不到 out_dir 变量...
我首先想到的是先执行chunks,所以设置了变量...但是这并没有解决问题...
我也重新启动了 R session 但这没有帮助。
最后一步是关闭 R,保存工作区,在重新打开 R 并加载工作区后,它再次运行起来非常棒。
我找不到原来的 post,有人推荐这个技巧...
重现的精确工作流程
打开新项目,在新文件夹中命名为test
创建一个 r markdown 文档
将 header 更改为:
---
title: "Untitled"
author: "Me"
date: "`r format(Sys.time(), '%d %B, %Y, %H:%M')`"
knit: (function(inputFile, encoding) {
rmarkdown::render(inputFile,
encoding=encoding,
output_file=file.path(dirname(inputFile), out_dir, 'analysis.html')) })
output:
html_document:
number_sections: yes
toc: yes
---
```{r write quant output files}
out_dir <- 'test'
if(!file.exists(out_dir)) {
dir.create(out_dir)
}
```
将文档另存为test.Rmd
单击编织按钮(html 现在已从按钮的选项中删除)
这将失败!
关闭项目!
点击保存环境!
打开项目并点击编织!
一切正常。
执行 rm(list=ls()) 之后一切正常
您可以尝试在要 knit
渲染的函数中设置 out_dir
变量:
knit: (function(inputFile, encoding) {
out_dir <- 'test';
rmarkdown::render(inputFile,
encoding=encoding,
output_file=file.path(dirname(inputFile), out_dir, 'analysis.html')) })
我发现写 output-file 名称很麻烦,所以我将 output_file
换成了 output_dir
参数,但保留了其余代码。通过这种方式,我的 Rmarkdown 仍然编织到一个子目录中,但名称为 inputFile
。另外,如果该目录不存在,则创建它
---
title: "title"
author: "gordon freeman"
date: "`r Sys.Date()`"
knit: (function(inputFile, encoding) {
out_dir <- "reports";
rmarkdown::render(inputFile,
encoding=encoding,
output_dir=file.path(dirname(inputFile), out_dir))})
---