【发布时间】:2015-04-18 01:42:47
【问题描述】:
假设一个数字向量x <- c(-3,2,1,-2, 4,-1,-5) x 中的最小非负值是1,所以索引/位置/答案应该是3。
我们如何使用任何函数来做到这一点?
(注意:函数which.min,在上述情况下,给出答案/索引7,这是最小值(但不是非负数))
【问题讨论】:
标签: r data-manipulation
假设一个数字向量x <- c(-3,2,1,-2, 4,-1,-5) x 中的最小非负值是1,所以索引/位置/答案应该是3。
我们如何使用任何函数来做到这一点?
(注意:函数which.min,在上述情况下,给出答案/索引7,这是最小值(但不是非负数))
【问题讨论】:
标签: r data-manipulation
你可以使用
which.max(1 / x)
# [1] 3
【讨论】:
试试:
which(x==min(x[x>0]))
#[1] 3
它告诉R 搜索等于非负值最小值的x。
编辑:如果有多个最小值,它将显示所有他们,所以在这种情况下,你可以做min(which(x==min(x[x>0])))。
注意:在这种情况下,您不能使用which.min,因为which.min(x[x>0]) 会为您提供向量x[x>0](@ 987654328@这里)
【讨论】:
要找到满足更一般条件的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
【讨论】: