改变所有出现的
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模式应用于输出矩阵。
仅当输入和输出矩阵具有相同的维度时,此功能才能起作用。
x <- matrix(c(33, 45, 50, NA, NA, 54), nrow=2, byrow=TRUE)
y <- diag(1:3)
x0 <- x
x0[is.na(x)] <- 0
z <- x0 %*% y
z[is.na(x)] <- NA
z
[,1] [,2] [,3]
[1,] 33 90 150
[2,] NA NA 162
我尝试创建自己的操作员跳过Na值。