Более эффективный способ вычисления квадрата расстояния в R
Я пытаюсь написать код (используя 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)
}