在 R 中找到具有最小欧氏距离的向量点

Find points of vector that have min euclidean distance in R

在 R 中我有两个向量

a = c(25,24,25)
b = c(33,33,32,31,26)

我正在使用 dist() 函数来计算 a,b 向量值的欧氏距离。

我想找到与 a 中的点的距离最小的 b 的值。

目前我的代码是:

 minDist = min(dist(c(a,b), method="euclidean"))

如何找到最小距离的点?

我宁愿这样进行:

m = outer(a,b, FUN=function(x,y) (x-y)**2)

which(m==min(m), arr.ind=T)
     row col
[1,]   1   5
[2,]   3   5

说明 b 中的元素 5 最接近 a 中的元素 13

确实:

#> m
#     [,1] [,2] [,3] [,4] [,5]
#[1,]   64   64   49   36    1
#[2,]   81   81   64   49    4
#[3,]   64   64   49   36    1

而不是 outer快速 解决方案将是:

nc = length(b)
nr = length(a)
m  = (matrix(a, ncol=nc, nrow=nr) - matrix(b, ncol=nc, nrow=nr, byrow=T))**2