将元素成对粘贴在一起

Paste elements together pairwise

假设我有两个向量和一个距离矩阵,如下所示

v1 = sample(c(0,1),5,replace=TRUE)
v2 = sample(c(0,1),5,replace=TRUE)
d = matrix(rep(1,5*5),ncol=5)
diag(d) <- 0

使用下面的函数计算距离

如何将它们粘贴在一起

这是移除内部循环并使用矢量化进行 vector2 乘法和求和的第一次尝试:

  f_d_categorical2 <- function(vector1, vector2, dist.matrix) {
  ptm <- proc.time()
  dist <- 0
  for (i in 1:length(vector1)) {
      dist <- dist + sum(vector1[i]*vector2*dist.matrix[i,])
  }
  print(proc.time()-ptm)
  return(dist)
}

处理时间从 1.8 秒减少到 0.03 秒。我确信还有改进的余地和额外的测试用例。