获取 R 中向量最小值排名的有效方法?

Efficient way to get the rank of the min of a vector in R?

R 中是否有一种有效的方法来获取向量(列表)的最小值(最大值)的排名?

我会使用 min 函数找到最小值

p = min(x)

然后使用 for 循环在 x 中搜索 p 的排名...

利用 R 功能的更好主意?

函数 order 为您提供了放置矢量所需的顺序(如果您想要对其进行排序)。 所以,如果 x 是你的向量,
order(x)[1] 为您提供 min
的索引 order(x)[length(x)](或 order(x, decreasing=T)[1])为您提供 max.

的索引

例子

set.seed(123)
x <- rnorm(10)
x
# [1] -0.56047565 -0.23017749  1.55870831  0.07050839  0.12928774  1.71506499  0.46091621 -1.26506123 -0.68685285
#[10] -0.44566197

# Now, compute the vector of ordered indices with order
ord_x <- order(x)

# get the index of the min
ord_x[1]
#[1] 8

# get the index of the max
ord_x[length(ord_x)]
#[1] 6

# you can check that you have the right indices:
x[8]==min(x)
#[1] TRUE
x[6]==max(x)
#[1] TRUE

您是否正在寻找向量中最小值的索引?

有一个函数,which.min,例如

which.min(c(15, 1, 5))
# 2