将向量的接近相同的数字分组

问题描述

我有以下向量:

c("a","a","b","c","c")

我想根据接近相同的值将其元素分成几组。 结果是这样的:

[[1]] ("a","a"),[[2]]("b"),[[3]]("a",[[4]]("c","c")

虽然第1组和第3组的元素相同,但它们不是邻居。所以他们属于不同的群体。 我尝试使用 for 循环来做,但它不够好。

解决方法

使用此代码

{ 0..arr.len() }.for_each(|i| { // braces
  println!("Item: {}",arr[i]);
})
,

另一种选择,但带有 rleid 包中的 data.table

> split(v,rleid(v))
$`1`
[1] "a" "a"

$`2`
[1] "b"

$`3`
[1] "a" "a"

$`4`
[1] "c" "c" "c"

或其他基本 R 选项

> split(v,cumsum(c(TRUE,head(v,-1)!=v[-1])))
$`1`
[1] "a" "a"

$`2`
[1] "b"

$`3`
[1] "a" "a"

$`4`
[1] "c" "c" "c"