我正在尝试编写代码(使用 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)
}