【发布时间】:2018-06-16 23:24:34
【问题描述】:
如何根据两个坐标之间的最近距离对矩阵进行排序?
例如,我有这个矩阵:
> x
[,1] [,2]
[1,] 1 1
[2,] 3 9
[3,] 2 6
[4,] 2 8
我希望矩阵的第一行在某种程度上是一个初始坐标。在我手动计算两个坐标之间的距离后,我发现x[1,] 与x[3,] 的距离最近。然后,x[3,] 与x[4,] 的距离最近。 x[4,] 与 x[2,] 的距离最近。所以排序后的矩阵将是:
[,1] [,2]
[1,] 1 1
[2,] 2 6
[3,] 2 8
[4,] 3 9
我尝试在下面编写 R 代码。但它不起作用。
closest.pair <- c(NA,NA)
closest.distance <- Inf
for (i in 1:(n-1))
for (j in (i+1):n) {
dist <- sum((houses[i,]-houses[j,])^2)
if (dist<closest.distance) {
closest.pair <- c(i,j)
}
print(houses[closest.pair,])
}
【问题讨论】:
-
如果例如 x 改为
matrix(c(1,1,2,2,1,2,6,8),ncol=2),结果会在第 1 行和第 2 行之间来回切换,或者我们会将最接近第 2 行但不是第 1 行的对放入第 3 行? -
我觉得你应该看看travelling salesman problem