Ответ 1
Используйте which
и возьмите первый элемент результата:
which(b > 0.65)[1]
#[1] 3
Я ищу условие, которое вернет индекс вектора, удовлетворяющего условию.
Например,
У меня есть вектор b = c(0.1, 0.2, 0.7, 0.9)
Я хочу знать первый индекс b, для которого говорят b > 0,65. В этом случае ответ должен быть 3
Я попробовал which.min(subset(b, b > 0.65))
Но это дает мне 1 вместо 3.
Пожалуйста, помогите
Используйте which
и возьмите первый элемент результата:
which(b > 0.65)[1]
#[1] 3
Вы можете использовать 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)
, чтобы понять, почему он не может дать желаемый результат.
Будьте осторожны, 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 < ИСТИНА