我有一个载体
y <- c(10:1, c(0.1,0.1,0.1))
如果我which.min(y)
,则返回索引11
。
但是,我希望它返回最后/最终索引,其中已经看到最小值。
我这样做很笨拙,这是:
rev(which(y == min(y)))[1]
但有更好的方法吗?
答案 0 :(得分:2)
我只想创建自己的效用函数
which.min2 <- function(x, last.index = FALSE, ...){
if(last.index) max(which(x == min(x, ...))) else which.min(x)
}
which.min2(y, TRUE)
## [1] 13
which.min2(y)
## [1] 11
如果您的向量中有NA
个
y <- c(10:1, c(0.1,0.1,NA))
which.min2(y, TRUE, na.rm = TRUE)
## [1] 12
which.min2(y, na.rm = TRUE)
## [1] 11
答案 1 :(得分:0)
您可以使用max.col
函数,它具有更丰富的处理关系的方式,但它需要一个矩阵,我没有找到相应的最小函数:
> y <- c(10:1, c(0.1,0.1,0.1))
> max.col(t(as.matrix(-y)), ties.method='last')
[1] 13
>
因此,根据您的真实y
向量的构建方式,您可以从此方法中获益。
答案 2 :(得分:0)
tail(order(y, decreasing=T),1)
#[1] 13