给定一个序列s <- 10:1
,base R
中是否有任何精美的功能可让您设置s
的索引的屏障以划分s
?
例如,如果barriers <- c(3,7)
表示分隔发生在s
的第3位和第7位,那么所需的输出应该是分区列表,例如
> list(10:8,7:4,3:1)
[[1]]
[1] 10 9 8
[[2]]
[1] 7 6 5 4
[[3]]
[1] 3 2 1
注意,如果barriers <- c(3,10)
,由于在第10位之后的屏障之外的分区没有任何剩余,因此所需的输出应为
> list(10:8,7:1)
[[1]]
[1] 10 9 8
[[2]]
[1] 7 6 5 4 3 2 1
您可以使用split
和findInterval
,但需要采用障碍来获得所需的输出:
s <- 10:1
barriers <- c(3.5,7.5)
split(s, findInterval(s, barriers))
#$`0`
#[1] 3 2 1
#
#$`1`
#[1] 7 6 5 4
#
#$`2`
#[1] 10 9 8