【发布时间】:2014-07-11 09:39:51
【问题描述】:
我想根据它们在 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")
【问题讨论】:
标签: r coordinates distance euclidean-distance