データ フレーム内の各ポイント (x、y) について、そのポイントからデータ フレーム内の同じ「グループ」ラベルを持たない他のすべてのポイントまでのユークリッド距離の合計を計算したいと考えています。これは、私が達成しようとしているもののハッキーな for ループ バージョンです。
# some fake data
d <- data.frame(group=rep(c('a','b','c'),each=3), x=sample(1:9), y=sample(1:9), z=NA)
for (i in 1:nrow(d)) {
d2 <- subset(d,group!=d$group[i])
d$z[i] <- sum(sqrt((d$x[i]-d2$x)^2 + (d$y[i]-d2$y)^2))
}
たとえば、点 a1 の目的の値は、a1 から b1、b2、b3、c1、c2、c3 のそれぞれまでの距離の合計である必要がありますが、距離 a1-a2 または a1-a3 は含まれません。これを達成するためのベクトル化された方法はありますか? 私はそれが明らかな解決策だと確信しています...さまざまな構成を試しましby()
たapply()
が、答えにたどり着けないようです。