我有以下双重总和:
我想在R中写一个代码
下面我介绍我的解决方案。首先,我选择将x,y和z存储为随机数组或矩阵。
m<-5
n<-7
x<-runif(n)
y<-matrix(runif(n*m), ncol=m)
z<-runif(m)
我使用了一个双循环来执行双和。
ans <- 0
for (i in 1:n){
for (j in 1:m){
ans <- ans + x[i]*y[i,j]*z[j]
}
}
我想加速这段代码,删除double for循环。有什么建议?
这只是矩阵的乘法:
t(x) %*% y %*% z
c(t(x) %*% y %*% z)
得到一个数字而不是1 x 1
矩阵。