使用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议。