激活renv环境后R Markdown中base R的load函数报错排查
问题解决:Renv环境中R Markdown运行load函数报错但knit正常
问题现象
在激活renv环境的R项目中编写R Markdown笔记本,运行代码块时调用load(file=...)出现如下错误:
Error in load(file = "/Volumes/caas/CADRE CLC Data Project5/Clean Data/AK-SU-NETWORKS-ROUT/eda.RData") : unused argument (file = "/Volumes/caas/CADRE CLC Data Project5/Clean Data/AK-SU-NETWORKS-ROUT/eda.RData")
但执行knit编译文档时可正常完成。
原因分析
核心问题是当前交互式会话中,某个已加载的包的load函数覆盖了base R原生的load函数。base R的load函数第一个参数是file,但其他包的同名函数可能没有这个命名参数,或者参数定义不同,导致报错。
而knit编译时会启动全新的R会话,包加载顺序或会话状态与交互式环境不同,因此没有触发函数覆盖的冲突。
解决办法
明确调用base R的load函数
在代码中直接指定使用base包的load,避免函数名冲突:rm(list=ls()) library(haven) library(dplyr) library(data.table) # Load complete (individual+network) data --------------------------- base::load(file="/Volumes/caas/CADRE CLC Data Project5/Clean Data/AK-SU-NETWORKS-ROUT/eda.RData")排查冲突来源
运行以下代码可以查看所有定义了load函数的包,找到覆盖base R的那个:conflicts(detail = TRUE)$load根据结果,你可以选择调整包的加载顺序,或者之后始终用
包名::load的方式调用对应函数。
内容的提问来源于stack exchange,提问作者dapple-putt-poultry
相关产品推荐
相关产品推荐

