如何在 R 中乘以两个包含缺失值的矩阵?


如果我们想要乘以两个包含缺失值的矩阵,那么我们首先需要将缺失值转换为零,然后就可以轻松地进行乘法。如果我们不这样做,那么乘法的输出将在所有位置都包含 NA。

查看下面给出的示例,以了解如果矩阵中存在 NA 则乘法的正确方法。

示例 1

以下代码段创建一个示例矩阵 -

M1<-matrix(sample(c(NA,rpois(2,5)),25,replace=TRUE),ncol=5)
M1

创建了以下矩阵 -

    [,1] [,2] [,3] [,4] [,5]
[1,]  6   10   NA    6   10
[2,]  6   NA   10   10   10
[3,] NA   10   10    6    6
[4,] 10   10   10    6   NA
[5,] 10    6   10   NA    6

要乘以两个包含缺失值的矩阵,在上面创建的矩阵上,将以下代码添加到上面的代码段中 -

M1<-matrix(sample(c(NA,rpois(2,5)),25,replace=TRUE),ncol=5)
M2<-matrix(sample(c(NA,rpois(2,5)),25,replace=TRUE),ncol=5)
M2

如果您将所有上面给出的代码段作为一个程序执行,它将生成以下输出 -

    [,1] [,2] [,3] [,4] [,5]
[1,]  7    7    7   NA   3
[2,]  7    7    3   NA   3
[3,]  7    3   NA   NA  NA
[4,] NA    7    7   NA   7
[5,] NA    3    7    3   7

要乘以两个包含缺失值的矩阵,在上面创建的矩阵上,将以下代码添加到上面的代码段中 -

M1<-matrix(sample(c(NA,rpois(2,5)),25,replace=TRUE),ncol=5)
M2<-matrix(sample(c(NA,rpois(2,5)),25,replace=TRUE),ncol=5)
M1[is.na(M1)]<-0
M1

如果您将所有上面给出的代码段作为一个程序执行,它将生成以下输出 -

    [,1] [,2] [,3] [,4] [,5]
[1,]  6   10   0     6   10
[2,]  6    0  10    10   10
[3,]  0   10  10     6    6
[4,] 10   10  10     6    0
[5,] 10    6  10     0    6

要乘以两个包含缺失值的矩阵,在上面创建的矩阵上,将以下代码添加到上面的代码段中 -

M1<-matrix(sample(c(NA,rpois(2,5)),25,replace=TRUE),ncol=5)
M2<-matrix(sample(c(NA,rpois(2,5)),25,replace=TRUE),ncol=5)
M1[is.na(M1)]<-0
M2[is.na(M2)]<-0
M2

如果您将所有上面给出的代码段作为一个程序执行,它将生成以下输出 -

   [,1] [,2] [,3] [,4] [,5]
[1,] 7   7     7    0    3
[2,] 7   7     3    0    3
[3,] 7   3     0    0    0
[4,] 0   7     7    0    7
[5,] 0   3     7    3    7

要乘以两个包含缺失值的矩阵,在上面创建的矩阵上,将以下代码添加到上面的代码段中 -

M1<-matrix(sample(c(NA,rpois(2,5)),25,replace=TRUE),ncol=5)
M2<-matrix(sample(c(NA,rpois(2,5)),25,replace=TRUE),ncol=5)
M1[is.na(M1)]<-0
M2[is.na(M2)]<-0
M1 %*% M2

如果您将所有上面给出的代码段作为一个程序执行,它将生成以下输出 -

    [,1] [,2] [,3] [,4] [,5]
[1,] 112 184  184    30 160
[2,] 112 172  182    30 158
[3,] 140 160  114    18 114
[4,] 210 212  142     0 102
[5,] 182 160  130    18  90

示例 2

以下代码段创建一个示例矩阵 -

M3<-matrix(sample(c(NA,round(rnorm(5),1)),25,replace=TRUE),ncol=5)
M3

创建了以下矩阵 -

    [,1]  [,2] [,3] [,4] [,5]
[1,] -0.2 -0.1   NA -0.1 -0.1
[2,]  1.3 -0.1 -0.6   NA  1.3
[3,] -0.1 -0.1  0.4  1.3   NA
[4,]  NA   1.3   NA -0.2 -0.2
[5,]  NA    NA -0.1  0.4 -0.6

要乘以两个包含缺失值的矩阵,在上面创建的矩阵上,将以下代码添加到上面的代码段中 -

M3<-matrix(sample(c(NA,round(rnorm(5),1)),25,replace=TRUE),ncol=5)
M4<-matrix(sample(c(NA,round(rnorm(5),1)),25,replace=TRUE),ncol=5)
M4

如果您将所有上面给出的代码段作为一个程序执行,它将生成以下输出 -

     [,1] [,2] [,3] [,4] [,5]
[1,] -0.1 -0.1 -0.9  0.7   NA
[2,]  0.7  0.7   NA  0.7 -0.1
[3,]   NA  1.1  0.7   NA -0.9
[4,]  0.7 -0.9   NA  0.7   NA
[5,] -0.7 -0.7  1.1 -0.9 -0.9

要乘以两个包含缺失值的矩阵,在上面创建的矩阵上,将以下代码添加到上面的代码段中 -

M3<-matrix(sample(c(NA,round(rnorm(5),1)),25,replace=TRUE),ncol=5)
M4<-matrix(sample(c(NA,round(rnorm(5),1)),25,replace=TRUE),ncol=5)
M3[is.na(M3)]<-0
M3

如果您将所有上面给出的代码段作为一个程序执行,它将生成以下输出 -

     [,1] [,2] [,3] [,4] [,5]
[1,] -0.2 -0.1  0.0 -0.1 -0.1
[2,]  1.3 -0.1 -0.6  0.0  1.3
[3,] -0.1 -0.1  0.4  1.3  0.0
[4,]  0.0  1.3  0.0 -0.2 -0.2
[5,]  0.0  0.0 -0.1  0.4 -0.6

要乘以两个包含缺失值的矩阵,在上面创建的矩阵上,将以下代码添加到上面的代码段中 -

M3<-matrix(sample(c(NA,round(rnorm(5),1)),25,replace=TRUE),ncol=5)
M4<-matrix(sample(c(NA,round(rnorm(5),1)),25,replace=TRUE),ncol=5)
M3[is.na(M3)]<-0
M4[is.na(M4)]<-0
M4

如果您将所有上面给出的代码段作为一个程序执行,它将生成以下输出 -

     [,1]  [,2] [,3] [,4] [,5]
[1,] -0.1 -0.1 -0.9  0.7  0.0
[2,]  0.7  0.7  0.0  0.7 -0.1
[3,]  0.0  1.1  0.7  0.0 -0.9
[4,]  0.7 -0.9  0.0  0.7  0.0
[5,] -0.7 -0.7 1.1  -0.9 -0.9

要乘以两个包含缺失值的矩阵,在上面创建的矩阵上,将以下代码添加到上面的代码段中 -

M3<-matrix(sample(c(NA,round(rnorm(5),1)),25,replace=TRUE),ncol=5)
M4<-matrix(sample(c(NA,round(rnorm(5),1)),25,replace=TRUE),ncol=5)
M3[is.na(M3)]<-0
M4[is.na(M4)]<-0
M3 %*% M4

如果您将所有上面给出的代码段作为一个程序执行,它将生成以下输出 -

      [,1]  [,2]  [,3]  [,4]   [,5]
[1,] -0.05  0.11  0.07 -0.19  0.10
[2,] -1.11 -1.77 -0.16 -0.33 -0.62
[3,]  0.85 -0.79  0.37  0.77 -0.35
[4,]  0.91  1.23 -0.22  0.95  0.05
[5,]  0.70 -0.05 -0.73  0.82  0.63

更新于: 2021年11月5日

708 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.