如何在R中的矩阵中找到非NA值的行索引?
矩阵也可以包含缺失值,并且这些缺失值也可以通过随机化放置在矩阵中,因此我们不能确定那些称为NA的值和非缺失值的位置。如果我们要查找矩阵中非缺失值的位置,则可以使用apply函数,在此我们可以使用哪个函数排除NA值。查看以下示例以了解其工作原理。
例1
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
例2
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
例子3
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
例子4
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
范例5
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
以上是 如何在R中的矩阵中找到非NA值的行索引? 的全部内容, 来源链接: utcz.com/z/338209.html