Во-первых, я упрощаю свой вопрос. Я хочу извлечь определенные диапазоны из числового вектора. Например, извлечение 3 диапазонов из 1:20
одновременно:
- 1
- 8 <х <12 </li>
- 17 <х <20 </li>
Следовательно, ожидаемый результат равен 2, 3, 4, 9, 10, 11, 18, 19
.
Я пытаюсь использовать для этого функцию findInterval()
и управляющие аргументы rightmost.closed
и left.open
, но любые наборы аргументов не могут достичь цели.
x <- 1:20
v <- c(1, 5, 8, 12, 17, 20)
x[findInterval(x, v) %% 2 == 1]
# [1] 1 2 3 4 8 9 10 11 17 18 19
x[findInterval(x, v, rightmost.closed = T) %% 2 == 1]
# [1] 1 2 3 4 8 9 10 11 17 18 19 20
x[findInterval(x, v, left.open = T) %% 2 == 1]
# [1] 2 3 4 5 9 10 11 12 18 19 20
Кстати, условия тоже могут быть в виде такой матрицы:
[,1] [,2]
[1,] 1 5
[2,] 8 12
[3,] 17 20
Я не хочу использовать цикл for
, если в этом нет необходимости.
Я благодарен за любую помощь.