获取 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
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