使用包 'move' 的 'distance' 函数时出错

Error when using the 'distance' function of the package 'move'

移动包重复出现错误,无法使用 distance 函数。当我第一次加载包时,我收到警告

“为‘距离’找到多个方法表”。

稍后,当遵循 move vignette 时,我 运行 代码行:

distance(leroy)[1:5]

并给出错误:

“(函数(类、fdef、mtable)中的错误: 无法为签名““移动”、“缺失””找到函数“距离”的继承方法。

在将此代码应用于我自己的数据集时,我收到了同样的错误。我认为这是因为 R 为 'distance' 使用了不同的包,但是当我通过 move::distance(leroy) 甚至 terra::distance(leroy) 直接调用它时,我仍然收到相同的错误。我已经尝试重新安装软件包以及移动所需的 'terra' 和 'raster' 软件包;我的笔记本电脑 (Mac)、RStudio 和所有其他软件包都已更新。 Gdal 与 geos 和 proj 一起更新。我有 运行 另一台笔记本电脑上的代码,以及 rdrr.io 上的代码,并且 运行 完美无缺,所以我假设问题出在我的笔记本电脑上。 ?move::distance() 向我展示了 function description,其中 x 是移动、移动堆栈或移动突发对象。从Movebank下载的数据集'leroy'和我自己的数据集都是移动对象。还有其他人 运行 遇到类似问题或有任何故障排除建议吗?

已解决!

移动包尚未更新以说明栅格现在需要 terra。我从 CRAN (move_4.0.6.tar.gz) 和 运行 下载了 move 包源代码,在将 move 包加载到 R 后,他们的距离函数代码。代码他们的距离方法是:

#setGeneric("distance")#, function(x){standardGeneric("distance")})

setMethod("distance", 
      signature=c(x=".MoveTrackSingle",y="missing"),
      definition=function(x){ 
    Dists<-raster::pointDistance(x[-sum(n.locs(x)),], x[-1,], longlat=isLonLat(x))
        return(Dists)
      })
setMethod("distance", 
      signature=c(".MoveTrackStack",y="missing"), 
      definition=function(x){
        lst <- lapply(split(x), distance)
        return(lst)
      })