使用butteR包closest_distance_rtree函数报错:'knn.RTree'未从rtree命名空间导出
解决
knn.RTree未导出的错误问题 这个错误的核心是butteR包调用了rtree包中未对外导出的内部函数knn.RTree,通常是两个包的版本不兼容导致的。以下是针对性解决思路:
匹配
rtree与butteR的依赖版本
先查看当前rtree版本:packageVersion("rtree")再去
butteR的GitHub仓库查看DESCRIPTION文件里的依赖声明,确认它要求的rtree版本号。如果当前版本不匹配,安装指定版本:# 示例:安装0.1.7版本的rtree devtools::install_version("rtree", version = "0.1.7", repos = "http://cran.us.r-project.org")临时调用内部函数替代(不推荐长期使用)
若暂时无法调整版本,可复制butteR::closest_distance_rtree的源码,将其中的rtree::knn.RTree替换为rtree:::knn.RTree(三个冒号调用内部函数),自定义函数使用:my_closest_distance_rtree <- function(coords, master) { rtree_obj <- rtree::RTree$new(data = master) result <- rtree:::knn.RTree(rtree_obj, coords, k = 1) # 保留原函数后续的处理逻辑 # ... } # 调用自定义函数 matched_coordinates <- my_closest_distance_rtree(coordinates, master_settlement_list)向
butteR开发者反馈bug
这属于版本兼容类问题,建议直接在butteR的GitHub仓库提交issue,说明你遇到的错误和使用的包版本,推动开发者更新依赖或调整函数调用逻辑。
内容的提问来源于stack exchange,提问作者gnewt
相关产品推荐
相关产品推荐

