Rstudio中RMarkdown执行knit时触发system.file()报错求助
Error in system.file(..., package = package, mustWork = mustWork) :
no file found
Calls: ... lua_filter -> -> pkg_file -> system.file
Execution halted
该报错触发原因是knit过程中调用lua过滤器时,指定R包的内置路径文件不存在,大部分情况是git管控项目的本地依赖库与全局环境版本冲突、或虚拟环境下的渲染相关包文件损坏,此前重装全局R、Rstudio无效通常是因为项目启用了独立的包环境。
以下是可落地的解决思路:
- 先定位缺失文件所属包:knit报错后立即在R控制台执行
traceback(),查看调用栈中pkg_file传入的package参数值,确认是哪个包的内置文件缺失,最常见为rmarkdown、bookdown、distill这类渲染相关包 - 检查项目包环境:如果项目使用了
renv/packrat等虚拟环境管控工具,执行对应环境的重装命令,以renv为例,运行renv::install("确认的缺失包名", force = TRUE)强制重装项目本地的对应包,不要仅重装全局环境的包 - 校验pandoc与rmarkdown兼容性:在控制台执行
rmarkdown::pandoc_version(),如果pandoc版本≥2.19,需要将rmarkdown包升级到≥2.20版本,否则会出现lua过滤器路径不兼容问题 - 清理项目缓存:删除项目目录下的所有
*_cache文件夹、.Rproj.user隐藏文件夹、渲染生成的临时文件,重启Rstudio后重新执行knit - 临时禁用自定义lua过滤器:如果你的Rmd文档yaml头部配置了自定义
lua_filter参数,先注释该配置后重试,排查是否是自定义过滤器路径配置错误导致的报错
内容的提问来源于stack exchange,提问作者sunmastermind
相关产品推荐
相关产品推荐

