r - 分散NA值的矩阵乘法

标签 r matrix multiplication 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

关于r - 分散NA值的矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16535084/

相关文章:

r - 将矩阵与r中的向量进行比较时如何返回匹配行的索引

c# - 尝试在 Unity 中实现 Jacobian IK 示例概述

python - 解决这个矩阵难题的更有效的解决方案?

x86 - 2 个 64 位整数的 SSE 乘法

assembly - 在 x86 汇编中是否可以用 mul 乘以立即数?

r - R 中的 .jnew 和 j.check 中的错误中的 write.xlsx 错误

c - 在 C 中进行无替换采样以用于 R 代码

r - 忽略keras中R的缺失目标值的损失函数

R:替换随机矩阵的 "off-diagonal"元素

c# - 如何制作可以使用 * 相乘的结构