如何在R中矩阵的每一行中找到n个最大值的索引?
如果矩阵有多列并且每行中的值都不同,那么最大数量将等于列数。假设我们要在名为M的矩阵中提取每行两个最大值的索引,然后可以使用以下命令-
t(apply(M,1,order,decreasing=TRUE)[1:2,])
例1
> M1<-matrix(rpois(80,5),ncol=4)输出结果> M1
[,1] [,2] [,3] [,4][1,] 7 4 4 10
[2,] 7 1 4 3
[3,] 9 6 6 4
[4,] 6 5 3 3
[5,] 3 3 2 4
[6,] 5 6 2 2
[7,] 4 7 3 10
[8,] 6 0 11 6
[9,] 1 6 2 2
[10,] 4 9 4 9
[11,] 4 10 3 6
[12,] 3 9 3 11
[13,] 5 4 7 2
[14,] 6 7 6 6
[15,] 2 5 6 3
[16,] 2 5 8 2
[17,] 0 3 1 6
[18,] 6 10 6 4
[19,] 3 4 5 5
[20,] 4 5 8 4
在每个M1中找到两个最大值的索引-
> t(apply(M1,1,order,decreasing=TRUE)[1:2,])输出结果
[,1] [,2][1,] 4 1
[2,] 1 3
[3,] 1 2
[4,] 1 2
[5,] 4 1
[6,] 2 1
[7,] 4 2
[8,] 3 1
[9,] 2 3
[10,] 2 4
[11,] 2 4
[12,] 4 2
[13,] 3 1
[14,] 2 1
[15,] 3 2
[16,] 3 2
[17,] 4 2
[18,] 2 1
[19,] 3 4
[20,] 3 2
例2
> M2<-matrix(rpois(80,50),ncol=4)输出结果> M2
[,1] [,2] [,3] [,4][1,] 65 52 42 63
[2,] 52 49 43 54
[3,] 50 35 49 57
[4,] 52 42 36 52
[5,] 48 36 45 43
[6,] 49 65 62 51
[7,] 52 46 56 51
[8,] 43 51 41 53
[9,] 53 40 51 55
[10,] 52 48 48 41
[11,] 54 44 48 42
[12,] 43 34 58 54
[13,] 41 50 51 45
[14,] 47 40 56 39
[15,] 49 48 42 38
[16,] 50 56 47 56
[17,] 55 48 39 52
[18,] 49 39 48 37
[19,] 53 49 58 50
[20,] 38 57 48 59
在每个M2中找到两个最大值的索引-
> t(apply(M2,1,order,decreasing=TRUE)[1:2,])输出结果
[,1] [,2][1,] 1 4
[2,] 4 1
[3,] 4 1
[4,] 1 4
[5,] 1 3
[6,] 2 3
[7,] 3 1
[8,] 4 2
[9,] 4 1
[10,] 1 2
[11,] 1 3
[12,] 3 4
[13,] 3 2
[14,] 3 1
[15,] 1 2
[16,] 2 4
[17,] 1 4
[18,] 1 3
[19,] 3 1
[20,] 4 2
以上是 如何在R中矩阵的每一行中找到n个最大值的索引? 的全部内容, 来源链接: utcz.com/z/359607.html