我正在寻找一个条件,它将返回满足条件的向量的索引。
例如 -
我有一个向量b = c(0.1, 0.2, 0.7, 0.9)
我想知道b的第一个索引,例如b> 0.65。在这种情况下,答案应为3
我试过which.min(subset(b, b > 0.65))
但这给了我1而不是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)
的结果,看看为什么它无法为您提供所需的结果。