在 R 矩阵中查找每行的最大值所在的列号。


要检查 R 矩阵中每行哪个列具有最大值,我们可以使用 apply 函数。

例如,如果我们有一个名为 M 的矩阵,则可以通过使用下面给出的命令找到每行具有最大值的列:-

apply(M,1,which.max)

示例 1

考虑下面给出的矩阵:-

M1<-matrix(rpois(80,10),ncol=4)
M1

创建了以下数据框

     [,1] [,2] [,3] [,4]
[1,]   7    9   14    8
[2,]  13   11   14   11
[3,]  10   17   15   18
[4,]  12    4   11    9
[5,]  15    9   15   10
[6,]   8   13    6   16
[7,]  12    8   11   10
[8,]  11    9   12   17
[9,]  12    7    6    3
[10,]  8   11   12    9
[11,]  6    9    9    8
[12,] 15   10    6    6
[13,]  8    4    8   12
[14,] 13    9   11    6
[15,] 12   11    8    9
[16,] 17    8    6   18
[17,]  6   11    8    7
[18,] 11   13   10    8
[19,]  9 11 7 17
[20,]  8 13 13 17

要在上面创建的数据框中,查找 M1 中每行最大值所在的列号,请将以下代码添加到上述代码段中:-

M1<-matrix(rpois(80,10),ncol=4)
apply(M1,1,which.max)

输出

如果您将上面给出的所有代码段作为单个程序执行,则会生成以下输出:-

[1] 3 3 4 1 1 4 1 4 1 3 2 1 4 1 1 4 2 2 4 4

示例 2

考虑下面给出的矩阵:-

M2<-matrix(round(rnorm(60),2),ncol=3)
M2

创建了以下数据框

       [,1]  [,2]  [,3]
[1,]   0.88 -1.37  0.95
[2,]  -1.05  1.53 -0.84
[3,]  -1.17 -0.35 -0.05
[4,]  -0.54 -0.54 -2.06
[5,]  -0.91 -1.02 -0.09
[6,]  -0.24 -0.05 -0.14
[7,]   0.13  0.01  0.99
[8,]   0.31 -0.36  0.34
[9,]  -0.31  1.34 -1.62
[10,]  0.22  1.75  1.15
[11,]  0.21 -0.77 -1.02
[12,] -2.85  1.91  0.30
[13,] -0.67 -0.17 -1.01
[14,] -1.58 -0.11 -1.36
[15,]  0.33  1.28 -0.04
[16,] -0.63  0.26  1.53
[17,]  0.39 -0.14  0.23
[18,]  1.10 -1.43  0.46
[19,]  1.56 -0.46 -1.09
[20,] -0.15 0.83   0.48

要在上面创建的数据框中,查找 M2 中每行最大值所在的列号,请将以下代码添加到上述代码段中:-

M2<-matrix(round(rnorm(60),2),ncol=3)
apply(M2,1,which.max)

输出

如果您将上面给出的所有代码段作为单个程序执行,则会生成以下输出:-

[1] 3 2 3 1 3 2 3 3 2 2 1 2 2 2 2 3 1 1 1 2

示例 3

考虑下面给出的矩阵:-

M3<-matrix(round(rexp(60,1),1),ncol=3)
M3

创建了以下数据框

      [,1] [,2] [,3]
[1,]  0.8  0.7  0.1
[2,]  0.2  0.4  0.4
[3,]  0.9  0.0  0.3
[4,]  0.8  0.4  0.2
[5,]  2.5  4.2  1.1
[6,]  3.6  0.9  0.0
[7,]  0.2  0.0  1.1
[8,]  1.4  0.1  0.7
[9,]  0.5  2.0  0.3
[10,] 1.6  0.0  0.3
[11,] 0.6  0.0  2.3
[12,] 1.3  0.0  0.9
[13,] 1.1  0.7  1.5
[14,] 0.5  0.2  2.3
[15,] 0.5  0.7  0.5
[16,] 0.0  1.1  2.3
[17,] 0.2  0.5  0.1
[18,] 0.8  0.1  1.5
[19,] 2.2  0.6  0.1
[20,] 1.1  0.6  0.7

要在上面创建的数据框中,查找 M3 中每行最大值所在的列号,请将以下代码添加到上述代码段中:-

M3<-matrix(round(rexp(60,1),1),ncol=3)
apply(M3,1,which.max)

如果您将上面给出的所有代码段作为单个程序执行,则会生成以下输出:-

[1] 1 2 1 1 2 1 3 1 2 1 3 1 3 3 2 3 2 3 1 1

更新时间: 2021-11-01

429 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告