r - 如何沿着数字向量并标记当前最小值的索引,直到找到更小的索引?

标签 r min

我想获取最小值的索引,例如:

v1 <- c(20, 30, 5, 18, 2, 10, 8, 4)

结果是:

1 3 5

说明:

v1上,我们从值20开始。无需继续,我们记下最小值 (20) 及其索引 (1)。我们忽略相邻元素,因为它大于 20。因此 20 仍然保持着最小的记录。然后我们转向5,它小于20。现在 5 是最小的,我们记下它的索引 (3)。由于 18 并不小于迄今为止的获胜者 (5),因此我们忽略它并继续向右走。由于 2 是迄今为止最小的,因此它是新的获胜者,并且它的位置已注明 (5)。小于 2 的值不会向右移动,仅此而已。最后,立场是:

1 # for `20` 
3 # for `5`
5 # for `2`

显然,输出应该始终以 1 开头,因为我们永远不知道接下来会发生什么。

另一个例子:

v2 <- c(7, 3, 4, 4, 4, 10, 12, 2, 7, 7, 8)

# output: 
1 2 8

Which.min() 似乎非常相关。但我不确定如何使用它来获得所需的结果。

最佳答案

您可以使用:

which(v1 == cummin(v1))

[1] 1 3 5

如果您有重复的累积最小值并且不希望将重复项编入索引,则可以使用:

which(v1 == cummin(v1) & !duplicated(v1))

或者:

match(unique(cummin(v1)), v1)

关于r - 如何沿着数字向量并标记当前最小值的索引,直到找到更小的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70274738/

相关文章:

c - 获取输入的五个数字的最小值、最大值和平均值

r - Latex 的概率边际效应输出

r - 解释一下惰性评估的怪癖

java - 设置 JFileChooser 的最小/最大大小 - Java

java - 对象数组列表 - 最小值

c# - 从列表中查找最小值

r - 如何生成 SVG 格式的二维码?

r - 使用 `randomForest` 包从 `cforest` 中提取变量重要性

r - 为什么 DT1[DT2][, value1-value] 在列较少的 data.table 上比 DT1[DT2, value1-value] 快?

sql - 如何将条件传递给 SQL 中的 MINI 语句