Pau*_*eux 6 r knitr r-markdown
我在项目文件夹中工作,让我们说它的绝对路径是:/project.getwd()告诉我,我在这个项目文件夹中.我的所有文件读取和写入都与此项目根相关./project有一个子文件夹/project/docs/其中有一个R Mardown文件和一个R脚本:
report.Rmd 包含:
```{r }
plot(cars)
```
Run Code Online (Sandbox Code Playgroud)
并knit_reports.R包含:
library(knitr)
knit2html("./docs/report.Rmd", "./docs/report.html")
Run Code Online (Sandbox Code Playgroud)
如果我运行knit_reports.R,会生成一个html页面,但页面上不会显示数字.
问题是数字存储在/project/figures.对于html文档生成,它们不可见.我正在寻找一种方法告诉knitr存储图片/project/docs/figures.
设置knitr选项root.dir或base.dir in report.Rmd不能解决问题,我试过opts_knit$set(root.dir = "./docs")或opts_knit$set(base.dir = "/project/docs").
但是,如果我将工作目录更改为/project/docs:
setwd("./docs/")
knit2html("report.Rmd", "report.html")
Run Code Online (Sandbox Code Playgroud)
将/project/docs/figure创建一个文件夹,并在html页面上显示图形.
许多人说在脚本中使用setwd()是不好的,因为它会弄乱可重复性.如何在不使用setwd()的情况下告诉knitr将数字放在我的项目子文件夹中?
Ramnath对设置base.dir的回答是个好答案.但起初我认为该选项应该在Rmd块中设置,这不起作用.该选项应在R脚本中设置.这是我猜的范围问题.
所以在我上面的例子中,knit_reports.R应该包含:
library(knitr)
opts_knit$set(base.dir = 'docs') # Change the base dir where to save figures
knit2html("./docs/report.Rmd", "./docs/report.html")
Run Code Online (Sandbox Code Playgroud)