在满足条件的向量内找到索引

时间:2014-03-26 11:51:11

标签: r

我正在寻找一个条件,它将返回满足条件的向量的索引。

例如 - 我有一个向量b = c(0.1, 0.2, 0.7, 0.9) 我想知道b的第一个索引,例如b> 0.65。在这种情况下,答案应为3

我试过which.min(subset(b, b > 0.65)) 但这给了我1而不是3。

请帮忙

3 个答案:

答案 0 :(得分:26)

使用which并获取结果的第一个元素:

which(b > 0.65)[1]
#[1] 3

答案 1 :(得分:2)

小心,which.max如果条件从未达到,则错误,它不会返回NA

> a <- c(1, 2, 3, 2, 5)
> a >= 6
[1] FALSE FALSE FALSE FALSE FALSE
> which(a >= 6)[1]
[1] NA  # desirable
> which.max(a >= 6)
[1] 1   # not desirable

为什么呢?当所有元素相等时,which.max返回1:

> b <- c(2, 2, 2, 2, 2)
> which.max(b)
[1] 1

注意:FALSE&lt; TRUE

答案 2 :(得分:1)

您可以使用which.max

which.max(b > 0.65)
# [1] 3

来自?which.max:“对于逻辑向量x,[...] which.max(x)返回[s]第一个[...] TRUE的索引

b > 0.65
# [1] FALSE FALSE  TRUE  TRUE

您还应该查看代码subset(b, b > 0.65)的结果,看看为什么它无法为您提供所需的结果。