gpt4 book ai didi

r - 如何将向量分成连续序列组?

转载 作者:行者123 更新时间:2023-12-03 21:05:55 29 4
gpt4 key购买 nike

我有一个向量,例如c(1, 3, 4, 5, 9, 10, 17, 29, 30),并且我想将形成规则的连续序列(即加1)的``邻居''元素组合在一起,在一个衣衫resulting的向量中导致:

L1:1
L2:3、4、5
L3:9,10
L4:17
L5:29,30

(前C程序员的)天真的代码:

partition.neighbors <- function(v)
{
result <<- list() #jagged array
currentList <<- v[1] #current series

for(i in 2:length(v))
{
if(v[i] - v [i-1] == 1)
{
currentList <<- c(currentList, v[i])
}
else
{
result <<- c(result, list(currentList))
currentList <<- v[i] #next series
}
}

return(result)
}


现在我知道a)R不是C(尽管花括号)b)全局变量是纯邪恶c)这是获得结果的极其无效的方法

,因此欢迎任何更好的解决方案。

最佳答案

大量使用一些R习惯用法:

> split(v, cumsum(c(1, diff(v) != 1)))
$`1`
[1] 1

$`2`
[1] 3 4 5

$`3`
[1] 9 10

$`4`
[1] 17

$`5`
[1] 29 30

关于r - 如何将向量分成连续序列组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5222061/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com