Answers:
请参阅?order
。您只需要最后一个索引(或第一个,以降序排列),因此这可以解决问题:
order(matrix[,2],decreasing=T)[1]
order
返回每个元素具有的索引,但按元素的值排序。如果列表首先排序,则rank
返回每个元素将具有的索引。从而order
返回当前索引值;并被用作熊猫的“索引器”。
接下来的情况如何,其中y是矩阵的名称,并且您正在寻找整个矩阵中的最大值:
row(y)[y==max(y)]
如果要提取行:
y[row(y)[y==max(y)],] # this returns unsorted rows.
要返回已排序的行,请使用:
y[sort(row(y)[y==max(y)]),]
这种方法的优点是您可以将条件内部更改为所需的任何内容。此外,使用col(y)
和悬挂逗号的位置,您还可以提取列。
y[,col(y)[y==max(y)]]
要仅查找特定列中最大值的行,请说出第2列,您可以使用:
seq(along=y[,2])[y[,2]==max(y[,2])]
同样,该条件可以灵活地查找不同的需求。
有关其他想法,请参见Phil Spector出色的“ S和S-Plus简介”第5章。