具有散布NA值的矩阵乘法 [英] Matrix multiplication with scattered NA values

查看:8
本文介绍了具有散布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
简单地执行Matrix1%*%Matrix2并不能给出我想要的第2行第3列中的元素(它给出NA,这是有意义的,但不确定如何做我想要它做的事情)。就我的目的而言,矩阵2永远不会有NA值,如果这会有什么变化的话。

推荐答案

NA的所有匹配项更改为0,然后进行矩阵乘法:

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

这篇关于具有散布NA值的矩阵乘法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆