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

时间:2015-09-30 12:58:43

标签: r euclidean-distance

在R中我有两个向量

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

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

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

目前我的代码是:

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

如何找到距离最近的点?

1 个答案:

答案 0 :(得分:2)

我宁愿这样做:

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

声明5中的元素b最接近1中的元素3a

事实上:

#> 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