如果两个矩阵包含缺失值,如何在 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
The following matrix is created −
[,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