如何根据R中的一列对矩阵排序?

由于矩阵仅包含数值,因此也可以对矩阵进行排序。排序矩阵可能有多种原因,例如我们想将矩阵转换为数据帧,在矩阵计算之前需要对存储在矩阵中的数据进行排序,以使计算后的结果视图更加清晰,等等。根据一列对矩阵进行排序,我们可以使用订单函数。

例子

set.seed(123)
M1 <-matrix(sample(1:100,20),ncol=2)
M1

输出结果

[,1] [,2]
[1,] 31 90
[2,] 79 69
[3,] 51 57
[4,] 14 9
[5,] 67 72
[6,] 42 26
[7,] 50 7
[8,] 43 95
[9,] 97 87
[10,] 25 36

示例

基于列1排序矩阵M1-

M1[order(M1[,1],decreasing=FALSE),]

输出结果

[,1] [,2]
[1,] 14 9
[2,] 25 36
[3,] 31 90
[4,] 42 26
[5,] 43 95
[6,] 50 7
[7,] 51 57
[8,] 67 72
[9,] 79 69
[10,] 97 87

示例

M1[order(M1[,1],decreasing=TRUE),]

输出结果

[,1] [,2]
[1,] 97 87
[2,] 79 69
[3,] 67 72
[4,] 51 57
[5,] 50 7
[6,] 43 95
[7,] 42 26
[8,] 31 90
[9,] 25 36
[10,] 14 9

示例

M2 <-matrix(sample(1:10,20,replace=TRUE),ncol=2)
M2

输出结果

[,1] [,2]
[1,] 1 7
[2,] 7 5
[3,] 5 6
[4,] 10 9
[5,] 7 2
[6,] 9 5
[7,] 9 8
[8,] 10 2
[9,] 7 1
[10,] 5 9

基于列2排序矩阵M2-

示例

M2[order(M2[,2],decreasing=TRUE),]

输出结果

[,1] [,2]
[1,] 10 9
[2,] 5 9
[3,] 9 8
[4,] 1 7
[5,] 5 6
[6,] 7 5
[7,] 9 5
[8,] 7 2
[9,] 10 2
[10,] 7 1

示例

M2[order(M2[,2],decreasing=FALSE),]

输出结果

[,1] [,2]
[1,] 7 1
[2,] 7 2
[3,] 10 2
[4,] 7 5
[5,] 9 5
[6,] 5 6
[7,] 1 7
[8,] 9 8
[9,] 10 9
[10,] 5 9

示例

M3 <-matrix(sample(1:50,20),ncol=2)
M3

输出结果

[,1] [,2]
[1,] 27 6
[2,] 25 8
[3,] 38 22
[4,] 21 48
[5,] 15 43
[6,] 41 17
[7,] 26 34
[8,] 31 4
[9,] 16 13
[10,] 30 5

基于列3排序矩阵M3-

示例

M3[order(M3[,2],decreasing=FALSE),]

输出结果

[,1] [,2]
[1,] 31 4
[2,] 30 5
[3,] 27 6
[4,] 25 8
[5,] 16 13
[6,] 41 17
[7,] 38 22
[8,] 26 34
[9,] 15 43
[10,] 21 48

示例

M3[order(M3[,2],decreasing=TRUE),]

输出结果

[,1] [,2]
[1,] 21 48
[2,] 15 43
[3,] 26 34
[4,] 38 22
[5,] 41 17
[6,] 16 13
[7,] 25 8
[8,] 27 6
[9,] 30 5
[10,] 31 4