假设数字向量x <- c(-3,2,1,-2, 4,-1,-5)
在x
中的最小非负值为1
,因此索引/位置/答案应为3
。
我们怎么能用任何函数来做呢?
(注意:在上述情况下,函数which.min
给出的答案/索引7
是最小的(但不是非负的))
答案 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