将元素成对粘贴在一起
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 秒。我确信还有改进的余地和额外的测试用例。
假设我有两个向量和一个距离矩阵,如下所示
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 秒。我确信还有改进的余地和额外的测试用例。