矩阵也可以包含缺失值,并且这些缺失值也可以通过随机化放置在矩阵中,因此我们不能确定那些称为NA的值和非缺失值的位置。如果我们要查找矩阵中非缺失值的位置,则可以使用apply函数,在此我们可以使用哪个函数排除NA值。查看以下示例以了解其工作原理。
M1<−matrix(sample(c(NA,0,1),25,replace=TRUE),ncol=5) M1
输出结果
[,1] [,2] [,3] [,4] [,5] [1,] NA 1 NA 0 0 [2,] 1 1 NA 0 1 [3,] 1 0 1 1 0 [4,] 0 NA 1 1 0 [5,] 0 NA 0 0 NA
apply(M1,1,function(x) which(!is.na(x)))
输出结果
[[1]] [1] 2 4 5 [[2]] [1] 1 2 4 5 [[3]] [1] 1 2 3 4 5 [[4]] [1] 1 3 4 5 [[5]] [1] 1 3 4
M2<− matrix(sample(c(NA,5,10,15,25),49,replace=TRUE),nrow=7) M2
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] NA NA 15 NA 10 15 5 [2,] 5 5 15 15 NA 10 25 [3,] NA 5 NA 10 25 10 10 [4,] 5 25 NA NA 10 5 NA [5,] 25 NA 15 5 15 10 5 [6,] 25 NA 10 NA 25 5 15 [7,] 10 5 25 NA 10 5 25
apply(M2,1,function(x) which(!is.na(x)))
输出结果
[[1]] [1] 3 5 6 7 [[2]] [1] 1 2 3 4 6 7 [[3]] [1] 2 4 5 6 7 [[4]] [1] 1 2 5 6 [[5]] [1] 1 3 4 5 6 7 [[6]] [1] 1 3 5 6 7 [[7]] [1] 1 2 3 5 6 7
M3<−matrix(sample(c(NA,0:9),100,replace=TRUE),nrow=10) M3
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 1 0 2 2 2 0 4 5 9 4 [2,] 0 4 5 2 6 3 3 8 6 2 [3,] 8 NA 6 4 7 1 7 5 5 6 [4,] NA 4 7 4 5 4 NA 1 0 5 [5,] 7 4 3 1 1 0 5 1 7 7 [6,] 3 8 5 8 3 1 2 2 3 4 [7,] 5 4 3 NA 0 8 3 5 9 6 [8,] 7 7 7 6 1 0 7 NA 6 7 [9,] 9 5 3 2 4 2 3 4 3 8 [10,] 1 3 6 4 4 1 8 0 4 1
apply(M3,1,function(x) which(!is.na(x)))
输出结果
[[1]] [1] 1 2 3 4 5 6 7 8 9 10 [[2]] [1] 1 2 3 4 5 6 7 8 9 10 [[3]] [1] 1 3 4 5 6 7 8 9 10 [[4]] [1] 2 3 4 5 6 8 9 10 [[5]] [1] 1 2 3 4 5 6 7 8 9 10 [[6]] [1] 1 2 3 4 5 6 7 8 9 10 [[7]] [1] 1 2 3 5 6 7 8 9 10 [[8]] [1] 1 2 3 4 5 6 7 9 10 [[9]] [1] 1 2 3 4 5 6 7 8 9 10 [[10]] [1] 1 2 3 4 5 6 7 8 9 10
M4<−matrix(sample(c(NA,rnorm(10,5,2)),36,replace=TRUE),nrow=6) M4
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 5.8658749 3.4589638 9.448970 4.0246447 5.0317765 3.4589638 [2,] 9.4489696 9.1581552 5.865875 3.8337310 5.9396619 5.9396619 [3,] 4.0246447 7.5142676 NA 9.4489696 0.9925749 5.0317765 [4,] 7.5142676 5.8658749 3.833731 0.9925749 0.9925749 7.5142676 [5,] 0.9925749 7.5142676 NA 9.1581552 9.4489696 NA [6,] 5.0317765 0.9925749 3.833731 4.0246447 7.5142676 0.9925749
apply(M4,1,function(x) which(!is.na(x)))
输出结果
[[1]] [1] 1 2 3 4 5 6 [[2]] [1] 1 2 3 4 5 6 [[3]] [1] 1 2 4 5 6 [[4]] [1] 1 2 3 4 5 6 [[5]] [1] 1 2 4 5 [[6]] [1] 1 2 3 4 5 6
M5<−matrix(sample(c(NA,rpois(10,5)),64,replace=TRUE),nrow=8) M5
输出结果
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 10 0 7 5 3 10 10 10 [2,] 5 3 NA 5 5 5 5 5 [3,] 5 5 3 5 3 5 7 5 [4,] 3 10 5 10 NA NA 5 5 [5,] 7 7 7 5 7 10 8 7 [6,] 0 3 7 3 7 5 3 10 [7,] 0 NA 5 NA 7 NA 0 5 [8,] 5 10 8 7 3 NA 8 3
apply(M5,1,function(x) which(!is.na(x)))
输出结果
[[1]] [1] 1 2 3 4 5 6 7 8 [[2]] [1] 1 2 4 5 6 7 8 [[3]] [1] 1 2 3 4 5 6 7 8 [[4]] [1] 1 2 3 4 7 8 [[5]] [1] 1 2 3 4 5 6 7 8 [[6]] [1] 1 2 3 4 5 6 7 8 [[7]] [1] 1 3 5 7 8 [[8]] [1] 1 2 3 4 5 7 8