代码之家  ›  专栏  ›  技术社区  ›  Mark

如何加速代码执行双重求和

r
  •  0
  • Mark  · 技术社区  · 6 年前

    我有以下两次求和:

    enter image description here

    我想用R写一段代码。

    下面我给出我的解决方案。首先,我选择将x,y和z存储为随机数组或矩阵。

    m<-5 
    n<-7
    x<-runif(n) 
    y<-matrix(runif(n*m), ncol=m) 
    z<-runif(m)
    

    我使用了一个双for循环来执行双和运算。

    ans <- 0
    for (i in 1:n){
      for (j in 1:m){
        ans <- ans + x[i]*y[i,j]*z[j]
      }
    }
    

    我想加快这个代码,删除双for循环。有什么建议吗?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Stéphane Laurent    6 年前

    这只是矩阵的乘法:

    t(x) %*% y %*% z
    

    c(t(x) %*% y %*% z) 1 x 1