R Markdown读取数据提示无此文件或目录但普通R脚本可正常运行如何解决
报错核心原因
- R Markdown在渲染/运行代码块时,默认工作目录是Rmd文件自身所在的文件夹,和R控制台的工作目录相互独立。你控制台查到的工作目录是项目根目录,但如果你的Rmd文件存放在
Scripts子文件夹内,Rmd运行时默认的工作目录就是./Scripts,此时按照你写的Data/2020VAERSDATA.csv路径,程序会去Scripts/Data/目录下找文件,自然会报路径不存在的错误。
解决方法
方法1:使用
here包自动定位项目根目录(最推荐,适配RStudio项目架构)
先安装包:install.packages("here")读取文件时修改路径写法:
library(here) vaers20 <- read.csv(here("Data", "2020VAERSDATA.csv"), stringsAsFactors = TRUE)here会自动识别.Rproj文件所在的根目录,不管Rmd放在哪个子文件夹都能正确定位文件路径。方法2:手动设置Rmd全局工作目录
在Rmd文件的首个setup代码块中添加以下配置,将Rmd的工作目录统一修改为项目根目录,后续原有路径写法可直接复用:knitr::opts_knit$set(root.dir = rprojroot::find_rstudio_root_file())方法3:手动调整相对路径
如果你的Rmd确实放在Scripts文件夹内,直接将路径改为指向父目录的写法即可:vaers20 <- read.csv("../Data/2020VAERSDATA.csv", stringsAsFactors = TRUE)
你可以在Rmd的代码块中运行getwd()打印实际运行时的工作目录,和控制台的输出做对比即可直接验证路径差异。
内容的提问来源于stack exchange,提问作者Magnetar
相关产品推荐
相关产品推荐

