В R: у меня есть вектор и вы хотите найти позицию первого значения, которое больше 100.
Найти положение первого значения больше X в векторе
Ответ 1
# Randomly generate a suitable vector
set.seed(0)
v <- sample(50:150, size = 50, replace = TRUE)
min(which(v > 100))
Ответ 2
Большинство ответов на основе which и max являются медленными (особенно для длинных векторов), поскольку они повторяются по всему вектору:
-
x>100оценивает каждое значение в векторе, чтобы увидеть, соответствует ли оно условию -
whichиmax/minищут все индексы, возвращенные на шаге 1. и находят максимум/минимум
Position будет оценивать условие только до тех пор, пока не встретит первое значение ИСТИНА и немедленно вернет соответствующий индекс, не продолжая до конца вектора.
# Randomly generate a suitable vector
v <- sample(50:150, size = 50, replace = TRUE)
Position(function(x) x > 100, v)
Ответ 3
Отъезд which.max:
x <- seq(1, 150, 3)
which.max(x > 100)
# [1] 35
x[35]
# [1] 103
Ответ 4
Как раз упомянуть, Хэдли Уикхэм реализовал функцию detect_index, чтобы выполнить именно эту задачу в своем пакете purrr для функционального программирования.
Недавно я использовал detect_index сам и рекомендовал бы его кому-либо еще с той же проблемой.
Документацию для detect_index можно найти здесь: https://rdrr.io/cran/purrr/man/detect.html
Ответ 5
Существует много решений, другое:
x <- 90:110
which(x > 100)[1]
Ответ 6
Предполагая, что это ваш вектор.
firstGreatearThan <- NULL
for(i in seq(along=values)) {
if(values[i] > 100) {
firstGreatearThan <- i
break
}
}