如果 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