这个问题可能与其他问题类似,但是当我检查它们时,它们与我正在寻找的有点不同.这是我的代码,
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)
但是,输出仍然是相同的,有人可以帮助我吗?
谢谢 :)
一点矩阵代数,你只需一步完成:
sum(WMatrix * (Data[, -3] %*% Data[, -1]))
[1] 11350
Run Code Online (Sandbox Code Playgroud)
编辑:在R中,*运算符执行元素乘法,同时%*%给出矩阵乘积.