基本R:带有循环的三维数组中的乘法元素

cmc*_*605 2 arrays r linear-algebra vectorization matrix-multiplication

我有两个3-D阵列,AB,每个2 x 3 x 3.下面显示的例子(这将有助于澄清我想如何繁殖).

 A1   A2   A3                             B1   B2   B3  
 A4   A5   A6                             B4   B5   B6

 A7   A8   A9                             B7   B8   B9
 A10  A11  A12                            B10  B11  B12

 A13  A14  A15                            B13  B14  B15
 A16  A17  A18                            B16  B17  B18
Run Code Online (Sandbox Code Playgroud)

我想要做的是创建一个矩阵,其中3 A矩阵被平均,并且某个位置的值由相应的B值加权......我无法解释,但是例如,第一个元素是:

[(A1*B1)+(A7*B7)+(A13*B13)] / sum(B1,B7,B13).
Run Code Online (Sandbox Code Playgroud)

另一个因素是:

[(A5*B5)+(A11*B11)+(A17*B17)] / sum(B5,B11,B17).
Run Code Online (Sandbox Code Playgroud)

等等...结果是2 x 3矩阵.我一直在玩嵌套for循环的不同组合,下面显示了一个例子,但我还没弄清楚如何正确地做到这一点......帮助升值.

for (j in 1:2){
     for (k in 1:3){
          ans[j*k]=sum(A[j,k,1:3]*B[j,k,1:3])/sum(B[j,k,1:3])
     }
}
Run Code Online (Sandbox Code Playgroud)

flo*_*del 5

你可以做:

apply(A * B, c(1,2), sum) / apply(B, c(1,2), sum)
Run Code Online (Sandbox Code Playgroud)