R言語を使用して、各行の行列の値から指定されたベクトルまでのユークリッド距離の2乗を見つけています。ベクトルは2つの点を比較するための点であり、この関数を作成します
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))
最初の行は点 p までの距離が最小であるため、結果は1です。
これは正常に動作しますが、適用バリエーションの 1 つを使用して for ループを取り除きたいのですが、行ごとに行列で機能し、複数の引数をサポートするものを見つけることができません。
編集:最初のコードに括弧と括弧に問題があったため、この質問は改訂されました:-(