行のすべてのペア間の二乗距離を含む行列を返すコードを (R を使用して) 記述しようとしています。以下は私が書いた実装です。期待どおりに動作しますが、行数が大きくなると非常に遅くなる可能性があります。私の観察によると、この行 (combn(x,m=2)) の実行に最も時間がかかります。したがって、多数の行に対してコードをより効率的にする方法について誰か提案があるかどうか疑問に思っていました.よろしくお願いします
gen.dist <- function(x){
n <- nrow(x)
idx <- combn(seq(1,n),m=2)
d <- apply(x, 2, calc.distance, combinations=idx,alpha=2)
return(list(n=n,d=d))
}
calc.distance <- function(x,combinations,alpha){
x1 <- x[combinations[1,]]
x2 <- x[combinations[2,]]
output <- (x1 - x2)^alpha
return(output)
}