使用R查找包含最大值的行索引

给定以下matrix让我们假设我想在第二列中find最大值:

mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3) mat [,1] [,2] [,3] [1,] 1 2 3 [2,] 7 8 9 [3,] 4 5 6 

我知道max(mat[,2])将返回8.如何返回行索引,在这种情况下,第二行?

?which.max

 > which.max( matrix[,2] ) [1] 2 

?order 。 你只需要最后一个索引(或者首先按顺序),所以这应该是诀窍:

 order(matrix[,2],decreasing=T)[1] 

以下情况如何,其中y是您matrix的名称,您正在整个matrix中寻找最大值:

 row(y)[y==max(y)] 

如果你想提取行:

 y[row(y)[y==max(y)],] # this returns unsorted rows. 

要返回sorting的行,请使用:

 y[sort(row(y)[y==max(y)]),] 

这种方法的优点是可以将条件内部更改为任何您需要的内容。 另外,使用col(y)和逗号的位置也可以提取列。

 y[,col(y)[y==max(y)]] 

要find特定列中的最大值的行,可以使用第2列:

 seq(along=y[,2])[y[,2]==max(y[,2])] 

再次有条件的是灵活地寻找不同的要求。

请参阅Phil Spector出色的“S和S-Plus简介”第5章以获得更多的build议。