knitr
允许您通过更改来更改评估代码块的目录root.dir
option
```{r, setup, include=FALSE}
knitr::opts_knit$set(root.dir = '~/Project')
```
这也可以在 RStudio 的全局选项中更改
目录选项(有优点和缺点)在R Markdown Cookbook:第 16.6 章 R 代码块的工作目录.
我有以下文件树
├── Project
├── Fig
│ └── Fig1.png
└── Rmd
└── Test.Rmd
R Markdown 文件Test.Rmd
看起来像这样
---
title: "Title"
output: html_document
---
```{r, setup, include=FALSE}
knitr::opts_knit$set(root.dir = '~/Project')
```
Now include figure
```{r}
knitr::include_graphics('Fig/Fig1.png')
```
像这样渲染 R Markdown 文件将not包括该图。
类似的问题描述还有很多
- 堆栈溢出:knitr::include_graphics() 失败并显示 PandocResourceNotFound
- Github 问题:当 1) 工作文件夹不在文档所在位置以及 2) 从工作文件夹编织时,include_graphics() 无法找到文件。第1825章
- knitr::include_graphics() 不会渲染图形bookdown
建议的解决方案是
选项 1) 使用normalizePath()
并设置rel_path = FALSE
knitr::include_graphics(path = normalizePath('Fig/Fig1.png'), rel_path = FALSE)
选项 2) 使用相对于 Rmd 文件的路径并设置error = FALSE
knitr::include_graphics(path = "../Fig/Fig1.png", error = FALSE)
选项 3) 使用绝对路径
knitr::include_graphics(path = '~/Project/Fig/Fig1.png', rel_path = FALSE)
还有更好的解决办法吗?会不会无法修复knitr::include_graphics()
?