在 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
中的元素 1
和 3
。
确实:
#> 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
在 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
中的元素 1
和 3
。
确实:
#> 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