Найти индекс элемента, сравниваемый с отсортированным вектором - PullRequest
0 голосов
/ 16 марта 2019

Если у меня есть отсортированный вектор, например

vec <- c(5, 6, 7, 8, 9, 10, 11, 12, 13, 14)

, и у меня есть

x <- 9.5

Тогда x находится между 5-м и 6-м значением в моей отсортированной строке, и яхочу получить индекс 5. Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 16 марта 2019

Следующее даст результат, который вы ищете:

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
1 голос
/ 16 марта 2019

Там должно быть несколько способов сделать это. В одну сторону, используя which.max

which.max(vec > x) - 1
#[1] 5

Сначала находит индекс, где vec больше x, а затем возвращает индекс на 1 меньше.

Если отсортировано, должно работать и обратное

which.min(vec < x) - 1
#[1] 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...