小编cmc*_*605的帖子

具有分散NA值的矩阵乘法

我想在R中将两个矩阵相乘,其中一个可能包含随机放置的NA值(即,没有理由将它们全部放在一行或一列中),但我仍然想要一个输出,如下例所示:

Matrix 1
[1,]      33        45    50
[2,]       NA       NA    54

Matrix 2
[1,] A1               0.0000000        0.0000000
[2,] 0.0000000        A2               0.0000000
[3,] 0.0000000        0.0000000           A3


Result
[1,]      33*A1     45*A2          50*A3
[2,]       NA       NA        (NA*0 +NA*0 +54*A3)=54*A3
Run Code Online (Sandbox Code Playgroud)

简单地做Matrix1%*%Matrix2并没有给出我想要的第2行第3列中的元素(它给出NA,这是有道理的,但不知道如何做我想做的事情).就我的目的而言,Matrix 2永远不会有NA值,如果它改变了什么.

r matrix multiplication na

5
推荐指数
1
解决办法
7666
查看次数

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

我有两个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)

arrays r linear-algebra vectorization matrix-multiplication

2
推荐指数
1
解决办法
735
查看次数