R:提取向量中最终/最后一个最小值的索引

时间:2014-08-01 11:33:21

标签: r

我有一个载体

y <- c(10:1, c(0.1,0.1,0.1))

如果我which.min(y),则返回索引11。 但是,我希望它返回最后/最终索引,其中已经看到最小值。 我这样做很笨拙,这是:

rev(which(y == min(y)))[1]

但有更好的方法吗?

3 个答案:

答案 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