如何加快代码执行两次求和的速度

时间:2018-09-01 10:58:46

标签: r

我有以下两次加法运算:

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)

我已经使用double for循环来执行两次求和。

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

我想加快这段代码的速度,删除double for循环。有什么建议吗?

1 个答案:

答案 0 :(得分:4)

这只是矩阵的乘法:

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

执行c(t(x) %*% y %*% z)以获得数字而不是1 x 1矩阵。