2017-04-10 86 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