将数字向量拆分为R中的连续块

时间:2013-08-29 10:23:08

标签: r vector

如果我有一个数字向量[1 2 3 4 7 8 9 10 15 16 17],我该如何拆分它以便我返回多个向量来分隔该向量的连续元素?即[1 2 3 4] [7 8 9 10] [15 16 17]。我在matlab中找到了如何做到这一点的答案,但我只使用R。

感谢。

2 个答案:

答案 0 :(得分:6)

这是另一种选择:

vec <- c( 1, 2, 3, 4, 7, 8, 9, 10, 15, 16, 17 )
split(vec, cumsum(seq_along(vec) %in% (which(diff(vec)>1)+1)))
# $`0`
# [1] 1 2 3 4
# 
# $`1`
# [1]  7  8  9 10
# 
# $`2`
# [1] 15 16 17

答案 1 :(得分:0)

另一种选择:

split(vec, cummax(c(1,diff(vec))))

结果

$`1`
[1] 1 2 3 4

$`3`
[1]  7  8  9 10

$`5`
[1] 15 16 17