首先,我简化一下我的问题。我想从一个数字向量中提取特定的范围。例如,在同一时间从
我尝试使用函数
顺便提一下,条件也可以像矩阵那样:
1:20
中提取3个范围:
- 1 < x < 5
- 8 < x < 12
- 17 < x < 20
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
循环。
非常感谢任何帮助。
x[findInterval(x, v) %% 2 == 1 & findInterval(x, v, left.open = T) %% 2 == 1]
,并得到了同样的输出结果。怎么样? - Darren Tsai