Если у меня есть отсортированный вектор, например
vec <- c(5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
, и у меня есть
x <- 9.5
Тогда x находится между 5-м и 6-м значением в моей отсортированной строке, и яхочу получить индекс 5. Как я могу это сделать?
x
Следующее даст результат, который вы ищете:
x<-c(5, 6, 7, 8, 9, 10, 11, 12, 13, 14) findInterval(9.5,x) > [1] 5
Альтернативные решения включают в себя:
> max(which(x < 9.5)) [1] 5
Там должно быть несколько способов сделать это. В одну сторону, используя which.max
which.max
which.max(vec > x) - 1 #[1] 5
Сначала находит индекс, где vec больше x, а затем возвращает индекс на 1 меньше.
vec
Если отсортировано, должно работать и обратное
which.min(vec < x) - 1 #[1] 5