Rmarkdown将输出文件定向到目录中

时间:2015-03-06 08:06:32

标签: r rstudio knitr r-markdown

我找到了一个非常好的技巧(link)到knitr的一个函数,你可以将你的输出html保存到一个输出文件夹和不同的文件名下。

您必须前往标题的唯一内容如下:

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上运行'有时'非常好,但有时找到out_dir变量有问题...

我首先考虑先执行块,然后设置变量......但这并没有解决问题......

我也重启了R会话,这没有帮助。

最后一步是关闭R,保存工作区,重新打开R并加载工作区后,它再次像魅力一样。

我找不到原帖,有人推荐这个技巧......

重新制作工作流程

打开新项目,将其命名为测试新文件夹
创建一个降价文件
将标题更改为:

---
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())之后一切都可以工作

1 个答案:

答案 0 :(得分:11)

您可以尝试在要提供的out_dir函数中设置knit变量:

knit: (function(inputFile, encoding) { 
      out_dir <- 'test';
      rmarkdown::render(inputFile,
                        encoding=encoding, 
                        output_file=file.path(dirname(inputFile), out_dir, 'analysis.html')) })