我想根据它们在R中的距离将单个点捕捉到其他点。详细地说,我有一组由X和Y坐标对定义的点。 另外我有单一的不同点,我想要拍到最近的邻居(欧几里德距离) 。根据坐标获取最近点
# target points
df <- data.frame(X=c(1,2,2,2,3,4),Y=c(1,2,2,3,3,4))
# points that need snapping
point1 <- data.frame(X=2.1, Y=2.3)
point2 <- data.frame(X=2.5, Y=2.5)
plot(df)
points(point1$X,point1$Y,pch=20,col="red")
points(point2$X,point2$Y,pch=20,col="blue")
但是如何进行点的捕捉? 如何捕捉点并将新坐标对分配给单点? R有没有简单的功能?或者是否需要应用 dist()函数来获取距离矩阵并搜索最近距离为 ?也许有更直接的方法。
那应该如何看起来像:
1)捕捉到最近的(欧氏距离)点(澄清溶液为1点)
point1$X_snap <- 2
point1$Y_snap <- 2
2)如果两个或多个点相若方式紧密比 捕捉到那个更“东北” a)先捕捉到更多的北(Y方向) b)如果有不止一个,在Y方向上有一个类似的距离捕捉 到那个更多东部
point2$X_snap <- 3
point2$Y_snap <- 3
为了图解说明的结果应该如何看起来像
#plot snapped points:
points(point1$X_snap,point1$Y_snap,pch=8,col="red")
points(point2$X_snap,point2$Y_snap,pch=8,col="blue")