如何查詢 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP