В 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
}
}