矩阵与NA值的乘法

时间:2018-02-22 23:52:57

标签: r matrix multiplication

如果我有2个具有随机NA值的矩阵,例如:

矩阵A:

     1  2  3
   1 5  NA 7
   2 NA 3  8
   3 NA 4  5

矩阵B:

     1  2  3
   1 NA 8  NA
   2 2  5  9
   3 NA 4  3

将它们相乘的最佳方法是什么?将NA值更改为0会产生不同的点积结果吗?

1 个答案:

答案 0 :(得分:0)

NAs将被忽略:

## Dummy matrices
mat1 <- matrix(sample(1:9, 9), 3, 3)
mat2 <- matrix(sample(1:9, 9), 3, 3)

## Adding NAs
mat1[sample(1:9, 4)] <- NA
mat2[sample(1:9, 4)] <- NA

mat1
#     [,1] [,2] [,3]
#[1,]    9   NA    3
#[2,]    2   NA   NA
#[3,]   NA    1    8

mat2
#     [,1] [,2] [,3]
#[1,]   NA   NA    4
#[2,]   NA    9    3
#[3,]   NA    7    1

mat1 * mat2
#     [,1] [,2] [,3]
#[1,]   NA   NA   12
#[2,]   NA   NA   NA
#[3,]   NA    7    8

mat1 %*% mat2
#     [,1] [,2] [,3]
#[1,]   NA   NA   NA
#[2,]   NA   NA   NA
#[3,]   NA   NA   NA

在这种情况下,点积仅产生NA,因为没有不涉及NA的操作。不同的矩阵可能会导致不同的结果。