我跟踪帖子Finding euclidean distance in R{spatstat} between points, confined by an irregular polygon window到最后并使一切正常,很棒。然而,在我的情况下,我希望将数据A中的距离点获取到数据B中的点,但仅当两个数据集具有相同的ID值时。我的问题可以遵循Finding euclidean distance in R{spatstat} between points, confined by an irregular polygon window中的示例,但是有两个Pts数据框,而不是找到Pts中点之间的距离我想找到Pts1和Pts2中点之间的距离,如果Pts1 $ ID == Pts2 $ ID (假设你添加和ID列)。 Pts1和Pts2中有许多ID级别。
答案 0 :(得分:0)
免责声明:这是在没有测试任何代码的情况下编写的,因此不能保证它能够正常工作,但它提供了一种直接解决问题的方法。
函数gdistance::costDistance
接受第三个参数来指定从第二个参数中的点到第三个参数中的点的距离,因此拥有数据A和数据B应该没有问题。
现在为每个ID执行此操作:如果只是将每个ID的点集拆分为单独的ID,然后在for循环中为每个ID执行距离代码?
如果A
和B
为data.frames
,您的坐标和IDA
以及IDB
是具有相同级别的因素,表明这些点的ID,那么您可以分成列表并计算这样的距离(假设您已经从链接的答案中运行了相应的代码):
Alist <- split(A, IDA)
Blist <- split(B, IDB)
rslt <- list()
for(i in seq_along(Alist)){
rslt[[i]] <- costDistance(tr1, Alist[[i]], Blist[[i]])
}