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

0 ответов

Другие вопросы по тегам