2017-04-10 88 views
2

我有一个200,000个对象的大向量。该向量包含整数值。矢量被排序。我怎样才能在大块相邻点中分割矢量。R:向量中的组相邻对象

例子:

x <- c(1,4,5,6,8,9,20,21,30) 

能不能给我(这里A R列表结果):

[[1]] 
[1] 1 

[[2]] 
[1] 4 5 6 

[[3]] 
[1] 8 9 

[[4]] 
[1] 20 21 

[[5]] 
[1] 30 

的基本方法是将整个价值循环,但它不是很有效。有任何想法吗 ?

+0

你如何决定哪些是相邻点? –

+0

矢量中的所有值都是整数。相邻的值必须相距1的距离。例如:2和3 –

回答

1

我们可以使用diffcumsum创建分组变量和splitvector

unname(split(x, cumsum(c(TRUE, diff(x)!=1)))) 
#[[1]] 
#[1] 1 

#[[2]] 
#[1] 4 5 6 

#[[3]] 
#[1] 8 9 

#[[4]] 
#[1] 20 21 

#[[5]] 
#[1] 30