我正在使用 R 语言来查找从每个矩阵行值到每行的指定向量的欧几里得距离平方, 并且向量是用于比较两个点的点我创建了这个函数
euclDist <- function(p1, p2){
sum((p1 - p2)^2)
}
现在我想创建一个函数,在矩阵中找到到指定点的欧几里得距离最小的行
minDist<- function(points, p){
dist = c()
for(i in seq(1:length(points[,1])))
dist[i] = euclDist2(points[i,], p)
which.min(dist)
}
例如
points = matrix(c(1:24), ncol=4)
p = c(1,2,1,2)
print(minDist(points, p))
结果为1,因为第一行到点 p 的距离最小
这很好用,但我想通过使用其中一种应用变体来摆脱 for 循环,但我找不到一个可以逐行处理矩阵并支持多个参数的循环。
编辑:这个问题被修改,因为第一个代码有括号和括号的问题:-(