找出R中最小非负值的索引

时间:2015-02-17 10:47:48

标签: r data-manipulation

假设数字向量x <- c(-3,2,1,-2, 4,-1,-5)x中的最小非负值为1,因此索引/位置/答案应为3
我们怎么能用任何函数来做呢?

(注意:在上述情况下,函数which.min给出的答案/索引7是最小的(但不是非负的))

3 个答案:

答案 0 :(得分:8)

您可以使用

which.max(1 / x)
# [1] 3

答案 1 :(得分:3)

尝试:

which(x==min(x[x>0]))
#[1] 3

告诉R搜索等于最小非负值的x
修改:如果出现多个最小值,则会显示所有这些内容,因此在这种情况下,您可以执行min(which(x==min(x[x>0])))

NB :在这种情况下,您无法使用which.min,因为which.min(x[x>0])会为您提供最小值的索引向量x[x>0]2此处)

答案 2 :(得分:0)

要找到满足更一般条件的x最小值的(第一个)索引,我建议使用自定义函数

which_min_cond <- function(x, cond) {
    seq_along(x)[cond][which.min(x[cond])]
}

其中cond可以是任何条件,例如我们的x >= 0

which_min_cond(x, x >= 0)
# [1] 3