在 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
广告