我希望将坐标列表与第二个坐标列表匹配,以返回第二个列表中最接近的点。我在R工作。
为了进行测试,我只有一个小样本,一个列表中有一个坐标,另一个列表中有9个坐标。每个“列表”都是一个数据框,如图所示,其中包含一个ID#(“ PID”)和“纬度”和“纬度”坐标列
> set1
PID Lat Lon
1 2050441 38.2488 -90.4833
> set2
PID Lat Lon
2 2050489 39.79233 -93.56323
3 2050506 39.72001 -91.40049
4 2050568 38.69969 -93.26532
5 2050570 37.93161 -91.77081
6 2050582 39.33211 -91.19534
7 2050623 39.06586 -93.73700
8 2050635 36.62708 -90.81711
9 2050647 37.84869 -90.49491
10 2050661 39.13082 -93.20838
我试图使它们成为空间点,并使用gDistance进行比较。理想情况下,我想要一个包含Set 1的输出,其中包含另一列显示距Set 2最近的点。
我尝试过:
set1sp <- SpatialPoints(set1)
set2sp <- SpatialPoints(set2)
set1$nearest_in_set2 <- which.min( sapply(gDistance(set1sp, set2sp)))
但是它返回一个错误:
$<-.data.frame
(*tmp*
中的错误,最近的设置2,值= c(2
= 1公升:
替换有9行,数据有1
所以我尝试对其进行编辑以简化为:
set1$nearest_in_set2 <- which.min( sapply(gDistance(set1sp, set2sp)))
但这会返回错误:
match.fun(FUN)中的错误:缺少参数“ FUN”,没有 默认
任何帮助将不胜感激,能够对我拥有的非常大的数据集执行此操作真是太棒了,因此,如果有比此方法快的方法,我也很高兴听到!!