取R中的和为for循环

Al-*_*aad 1 loops for-loop r

这个问题可能与其他问题类似,但是当我检查它们时,它们与我正在寻找的有点不同.这是我的代码,

Data <- rbind(c(54, 55, 51), c(52, 51, 57))
WMatrix <- rbind(c(0, 1), c(1, 0)) 

for(i in 1:2){
   for(j in 1:2){
      for(t in 1:2){
      print(WMatrix[i,j]*Data[j,t]*Data[i,t+1])
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

这些代码的输出是,

[1] 0
[1] 0
[1] 2860
[1] 2601
[1] 2754
[1] 3135
[1] 0
[1] 0
Run Code Online (Sandbox Code Playgroud)

现在,我希望从循环中立即生成此输出的总和(不列出它).也就是说,循环的输出应该是11350,这是循环中所有生成的输出的总和.我知道这个问题可能很简单,但我还在学习基本的编程.我试过这个,

for(i in 1:2){
   for(j in 1:2){
      for(t in 1:2){
      print(sum(WMatrix[i,j]*Data[j,t]*Data[i,t+1]))
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,输出仍然是相同的,有人可以帮助我吗?

谢谢 :)

And*_*rie 8

一点矩阵代数,你只需一步完成:

sum(WMatrix * (Data[, -3] %*% Data[, -1]))
[1] 11350
Run Code Online (Sandbox Code Playgroud)

编辑:在R中,*运算符执行元素乘法,同时%*%给出矩阵乘积.

  • @Andrie,你对运算符的描述是向后的(顺便说一句,`*`执行的元素乘法有时称为*Hadamard乘积*http://en.wikipedia.org/wiki/Hadamard_product_%28matrices%29) (2认同)