R – Matrix multiplication with scattered NA values

matrixmultiplicationnar

I'm looking to multiply two matrices together in R, one of which may contain randomly placed NA values (i.e., there's no reason they will be all in a row or column), but I still want an output like the example below:

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

Simply doing Matrix1%*%Matrix2 doesn't give what I want for the element in Row 2, Column 3 (it gives NA, which makes sense, but not sure how to do what I'd like it to do). For my purposes, Matrix 2 will never have NA values, if that changes anything.

Best Solution

Change all occurrences of NA to 0, then do the matrix multiplication:

x <- matrix(c(33, 45, 50, NA, NA, 54), nrow=2, byrow=TRUE)
y <- diag(1:3)


x[is.na(x)] <- 0

x %*% y
     [,1] [,2] [,3]
[1,]   33   90  150
[2,]    0    0  162
Related Question