问题描述
我有以下向量:
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"