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

将数值向量拆分为R中的连续块,r,vector,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 谢谢。这里还有另一个选择: 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))

如果我有一个数值向量[1 2 3 4 7 8 9 10 15 16 17],我如何分割它,使返回的多个向量分离该向量的连续元素?即[1 2 3 4][7 8 9 10][15 16 17]。我在matlab中找到了一个解决方法,但我只使用R


谢谢。

这里还有另一个选择:

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
vec 1)+1)
# $`0`
# [1] 1 2 3 4
# 
# $`1`
# [1]  7  8  9 10
# 
# $`2`
# [1] 15 16 17
另一个选项:

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

$`1`
[1] 1 2 3 4

$`3`
[1]  7  8  9 10

$`5`
[1] 15 16 17

从OP的表现来看,这个答案是不正确的。但是看到OP已经接受了这个答案,你似乎已经读懂了他的心思@阿伦,很好的观点,我不知道我是怎么塞的。。。现在更正!抱歉,我在这里有点高兴。我认为这是正确的解决方案,但正如阿伦指出的,这并不是我想要的。无论如何谢谢你@user2728808足够公平-现在整理好了好吧,OP希望向量被分割成连续的运行,所以这是(唯一)正确的答案+1这里有一些备选方案: