我正在寻找一个条件,它将返回满足条件的向量的索引。
例如,我有一个向量b = c(0.1, 0.2, 0.7, 0.9)
,我想知道b的第一个索引,假设b >0.65。在这种情况下,答案应该是3
我尝试过which.min(subset(b, b > 0.65))
,但结果是1而不是3。
请帮帮忙
发布于 2014-03-26 11:53:32
使用which
并获取结果的第一个元素:
which(b > 0.65)[1]
#[1] 3
发布于 2016-02-03 04:34:29
请注意,如果从未满足条件,则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 < TRUE
发布于 2014-03-26 12:29:24
您可以使用which.max
which.max(b > 0.65)
# [1] 3
来自?which.max
:“对于逻辑向量x,... which.max(x)
返回第一个... TRUE
的索引
b > 0.65
# [1] FALSE FALSE TRUE TRUE
您还应该查看代码subset(b, b > 0.65)
的结果,以了解为什么它不能给您想要的结果。
https://stackoverflow.com/questions/22660149
复制相似问题