在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"))
如何找到距离最近的点?
答案 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
中的元素3
和a
。
事实上:
#> 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