Rmarkdown中knitr::include_graphics无法找到项目文件求助
R Markdown路径引用报错的解决方法
1. 确认here()的项目根识别是否正确
- 先在代码块里添加测试代码,查看
here()实际指向的路径:
print(here()) print(here::dr_here())
- 如果输出的根目录不是你的项目根,说明
here包未正确识别项目(通常是因为项目目录缺少.Rproj、.here这类标识文件,或是当前R会话未关联到项目)。 - 解决方式:重新通过项目的
.Rproj文件打开RStudio,或是在项目根目录手动创建一个空的.here文件。
2. 检查是否存在局部工作目录设置覆盖全局
- 虽然你全局开启了「在项目目录中评估代码块」,但单个Rmd文件可能存在局部配置冲掉全局设置。检查你的Rmd文件:
- 是否在开头写了
knitr::opts_knit$set(root.dir = "...") - YAML头中是否有类似
knit: (function(input, ...) rmarkdown::render(input, root.dir = "..."))的配置
- 是否在开头写了
- 解决方式:删除这些局部工作目录设置,让代码块继承全局的项目目录评估规则。
3. 验证文件实际路径是否匹配
- 报错中的
../../../relative/path/to/figure.png说明here()拼接后的路径与预期不符。可手动核对:- 项目根目录下是否存在
relative/path/to/figure.png这个路径 - 用
file.exists(here("relative/path/to/figure.png"))测试文件是否存在,返回TRUE才符合预期
- 项目根目录下是否存在
临时应急方案
如果以上方法均未解决,可暂时使用绝对路径替代(不推荐长期使用,不利于项目移植):
knitr::include_graphics("/absolute/path/to/your/project/relative/path/to/figure.png")
内容的提问来源于stack exchange,提问作者Daniel Estévez
相关产品推荐
相关产品推荐

