如果我们有一个包含NA或Inf值的矩阵,而我们想采用有限值的那个矩阵的子集,那么只有不包含NA或Inf值的行才是输出。我们可以通过使用rowSums和带有求反运算符!的is.finite函数在R中执行此操作。
set.seed(999) M1<-matrix(sample(c(1:10,NaN,Inf),25,replace=TRUE),ncol=5) M1
输出结果
[,1] [,2] [,3] [,4] [,5] [1,] 5 2 4 10 NaN [2,] 7 8 7 2 8 [3,] 2 1 1 10 7 [4,] NaN 5 Inf 2 5 [5,] 10 8 2 1 10
Finite_M1<-M1[!rowSums(!is.finite(M1)),] Finite_M1
输出结果
[,1] [,2] [,3] [,4] [,5] [1,] 7 6 7 1 9 [2,] 9 3 6 5 5 [3,] 1 7 3 3 7
M2<-matrix(sample(c(0:25,NaN,Inf),64,replace=TRUE),ncol=8) M2
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 7 13 Inf 3 3 3 8 Inf [2,] 9 9 12 25 20 5 18 9 [3,] Inf 10 13 20 19 5 8 1 [4,] 0 9 22 17 24 2 1 15 [5,] 22 15 1 21 16 17 14 Inf [6,] 12 9 Inf 10 NaN 19 22 20 [7,] 16 21 9 16 10 18 6 21 [8,] 21 NaN 16 18 25 11 25 20
Finite_M2<-M2[!rowSums(!is.finite(M2)),] Finite_M2
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 4 22 23 1 24 16 19 7 [2,] 24 15 7 12 1 11 6 24 [3,] 25 10 25 24 12 18 22 18 [4,] 23 0 3 21 11 8 4 14
M3<-matrix(sample(c(0:10,NaN,Inf),36,replace=TRUE),ncol=6) M3
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 5 0 8 6 2 7 [2,] 3 7 4 8 8 1 [3,] 1 0 2 6 9 1 [4,] 6 4 2 0 7 6 [5,] 8 3 2 3 6 0 [6,] 6 2 1 0 7 6
Finite_M3<-M3[!rowSums(!is.finite(M3)),] Finite_M3
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 7 5 4 7 9 8 [2,] 5 9 7 8 9 8
M4<-matrix(sample(c(51:100,NaN,Inf),100,replace=TRUE),ncol=10) M4
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 66 71 69 81 64 63 90 55 70 92 [2,] 75 72 72 92 55 96 95 79 61 70 [3,] 84 76 89 73 84 86 85 83 72 83 [4,] 65 85 54 97 71 91 65 76 51 72 [5,] 76 66 61 61 71 58 Inf 85 73 84 [6,] 87 62 69 81 65 95 93 62 NaN 51 [7,] 83 68 81 86 89 80 Inf 93 92 63 [8,] 66 60 67 56 62 62 55 60 64 69 [9,] 60 83 80 70 88 72 69 Inf 96 55 [10,] 56 74 69 66 78 94 62 79 77 59
Finite_M4<-M4[!rowSums(!is.finite(M4)),] Finite_M4
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 93 85 56 76 60 100 79 92 85 57 [2,] 100 100 59 93 60 86 100 64 98 60 [3,] 88 75 98 77 75 56 82 52 69 67 [4,] 59 51 94 94 78 100 86 75 51 59 [5,] 100 90 65 62 82 54 99 63 70 76
M5<-matrix(sample(c(101:125,NaN,Inf),25,replace=TRUE),ncol=5) M5
输出结果
[,1] [,2] [,3] [,4] [,5] [1,] 114 117 124 125 121 [2,] 117 114 111 116 107 [3,] 117 117 107 116 115 [4,] 122 114 108 121 113 [5,] 121 103 106 Inf 106
Finite_M5<-M5[!rowSums(!is.finite(M5)),] Finite_M5
输出结果
[,1] [,2] [,3] [,4] [,5] [1,] 110 119 117 123 125 [2,] 102 120 117 112 111 [3,] 108 124 125 103 123
M6<-matrix(sample(c(1001:1009,NaN,Inf),36,replace=TRUE),ncol=6) M6
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 1002 1008 1005 1005 NaN 1008 [2,] 1003 1007 1007 1004 1009 1002 [3,] 1008 1003 1009 1006 Inf Inf [4,] 1007 1005 1005 1004 1004 1004 [5,] NaN 1002 1004 1003 1001 1008 [6,] 1009 1006 1005 1007 1008 1007
Finite_M6<-M6[!rowSums(!is.finite(M6)),] Finite_M6
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 1009 1007 1002 1007 1002 1009 [2,] 1004 1003 1004 1006 1001 1006
M7<-matrix(sample(c(91:99,NaN,Inf),64,replace=TRUE),ncol=8) M7
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 91 95 98 96 99 NaN 94 96 [2,] 93 Inf 94 98 NaN NaN 97 Inf [3,] 93 97 97 94 94 93 NaN 92 [4,] 96 92 Inf 92 93 98 94 98 [5,] 93 97 95 92 NaN 91 93 99 [6,] 95 96 91 99 97 99 97 97 [7,] 99 96 95 91 96 93 95 96 [8,] 93 98 91 92 91 Inf 96 92
Finite_M7<-M7[!rowSums(!is.finite(M7)),] Finite_M7
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 95 99 98 98 92 93 97 92 [2,] 94 99 98 98 99 97 92 96