我想找到一个条件,根据条件返回向量的索引。
例如-
我有一个向量 b = c(0.1, 0.2, 0.7, 0.9)
我想知道b中第一个大于0.65的元素的索引。在这种情况下,答案应该是3
我尝试过 which.min(subset(b, b > 0.65))
,
但这会返回1而不是3。
请帮忙解决。
我想找到一个条件,根据条件返回向量的索引。
例如-
我有一个向量 b = c(0.1, 0.2, 0.7, 0.9)
我想知道b中第一个大于0.65的元素的索引。在这种情况下,答案应该是3
我尝试过 which.min(subset(b, b > 0.65))
,
但这会返回1而不是3。
请帮忙解决。
使用 which
命令并取结果中的第一个元素:
which(b > 0.65)[1]
#[1] 3
注意,如果条件从未被满足,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
您可以使用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)
,以了解为什么它无法给出所需的结果。