【发布时间】:2015-05-07 19:20:34
【问题描述】:
我发现 knitr 函数的一个非常好的技巧 (link),您可以在其中将输出的 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 变量时会遇到问题...
我首先想到的是先执行chunk,所以变量设置好了……但这并没有解决问题……
我还重新启动了 R 会话,但这没有帮助。
最后一步是关闭 R,保存工作区,在重新打开 R 并加载工作区后,它再次像魅力一样工作。
我找不到原来的帖子,有人推荐了这个技巧......
重现的准确工作流程
打开新项目,在新文件夹中将其命名为 test
创建一个 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
单击 knit 按钮(html 现在已从按钮的选项中删除)
这将失败!
关闭项目!
点击保存环境!
打开项目并单击 knit!
一切正常。
执行 rm(list=ls()) 之后一切正常
【问题讨论】:
-
想象一下在干净的 R 会话中运行该代码。如果你没有定义它,R 怎么知道
out_dir是什么?当这在重新加载工作区后工作时,这是因为out_dir是从您上一个 R 会话结转的对象,它允许代码工作,即使它不应该工作。 -
你是对的,但是当 html 被创建时,命令会在 rmakrdown 进程中被评估。我也可以手动设置变量 out_dir 仍然存在同样的问题,Rstudio 抱怨 out_dir 不存在...如果脚本运行一次,我也可以执行 rm(list=ls()) ,然后它可以作为嗯...所以我认为这不仅仅是设置变量的问题...
-
如果不指定该变量,此代码将无法运行。如果没有对您所遵循的工作流程的完整描述,很难说它为什么似乎有效。
-
我添加了正确的工作流程。这真的很奇怪,因为一切正常,如果我至少重新打开项目......不确定其他人是否可以重现这个......但这对我来说也没有具体意义。我只是想,该命令将在整个降价过程结束时进行评估......
-
刚刚找到原招的链接
标签: r rstudio knitr r-markdown