我正在尝试编写一个计算量很大的算法,因此我想用apply函数替换每个循环。但是我在下面的循环中非常堆叠,我想知道是否有人有任何想法。 bc是一个0和1的矩阵,ac是一个零的矩阵,与bc的dim相同。
for (i in 1:nr){
for (j in 1:nr){
ac[i,j] <- (bc[i,j]+bc[j,i])/2
}
}
答案 0 :(得分:3)
我们可以获得bc
的总和和bc
的转置并除以2。
(bc+t(bc))/2
或者
Reduce(`+`, list(bc, t(bc)))/2
bc <- matrix(1:25, 5,5)
nr <- 5
ac <- matrix(,5,5)