在矢量或列中找到第二(第三...)最高/最低值的最快方法

R提供最大值和最小值,但除了从整个向量中排序而不是从该向量中选取值x之外,我没有看到在序列中找到另一个值的快速方法。


是否有更快的方法来获得第二高的值(例如)?


谢谢


翻过高山走不出你
浏览 559回答 3
3回答

茅侃侃

使用的partial参数sort()。第二个最高值:n <- length(x)sort(x,partial=n-1)[n-1]

交互式爱情

稍微慢一点的替代品,仅用于记录:x <- c(12.45,34,4,0,-234,45.6,4)max( x[x!=max(x)] )min( x[x!=min(x)] )

HUH函数

我将Rob的答案包含在稍微更通用的功能中,可用于查找第2,第3,第4(等)max:maxN <- function(x, N=2){&nbsp; len <- length(x)&nbsp; if(N>len){&nbsp; &nbsp; warning('N greater than length(x).&nbsp; Setting N=length(x)')&nbsp; &nbsp; N <- length(x)&nbsp; }&nbsp; sort(x,partial=len-N+1)[len-N+1]}maxN(1:10)
打开App,查看更多内容
随时随地看视频慕课网APP