替换sf后R包仍出现maptools等旧包警告,如何排查引用?
解决R包遗留空间分析包警告的方案
排查间接依赖
你的包直接依赖只有sf,但可能其他依赖包(比如Imports、Suggests里的包)在内部调用了maptools/rgdal/rgeos。用以下命令可以拉出完整的依赖链:
library(tools) package_deps("CRTspat", recursive = TRUE)
挨个检查这些依赖包,定位出还在依赖遗留空间包的对象。
清理缓存并重建包
- 删除本地安装的CRTspat包,重新从GitHub克隆后再安装
- 运行
devtools::document(clean = TRUE),彻底清理旧文档和编译缓存 - 检查tests文件夹下的脚本,确认测试用例里没有遗漏的旧包引用
检查sf的配置状态
sf本身的配置也可能触发相关警告,运行命令查看sf的依赖版本:
sf::sf_extSoftVersion()
如果输出里还有rgdal/rgeos的相关条目,需要重新编译sf,确保它使用GDAL 3+的现代接口。
查看构建日志定位根源
用devtools::build()构建包,查看完整输出日志,找到警告触发的具体位置,精准定位问题来源。
内容的提问来源于stack exchange,提问作者Thomas Smith
相关产品推荐
相关产品推荐

