如何在R中使用apply代替循环

时间:2016-02-10 10:04:39

标签: r apply sapply tapply mapply

我正在尝试编写一个计算量很大的算法,因此我想用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          
  }
}

1 个答案:

答案 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)