假设我有一个向量
v <- c(2, 3, 5, 11, 3, 19, 20, 88, 20, 22)
Run Code Online (Sandbox Code Playgroud)
当数字小于向量中的数字时,我希望它们分开,例如
2, 3, 5, 11
3, 19, 20, 88
20, 22
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几种方法,但是,对于语言的新手,我找不到方法.我尝试通过下一个减去每个元素并得到负数的索引,这给了我应该分割矢量的索引,但我还没有找到如何用来split()从这些索引中获得结果.这是我最有成效的方法,虽然看起来效率低下.
有什么建议?
这是一种方法:
> split(v, cumsum(c(1, diff(v) < 0)))
$`1`
[1] 2 3 5 11
$`2`
[1] 3 19 20 88
$`3`
[1] 20 22
Run Code Online (Sandbox Code Playgroud)
从概念上讲,它与您的想法类似.diff负责通过下一个减去每个元素.diff(v) < 0创建一个逻辑向量.c(1, diff(v) < 0)将其转换为1和0的向量,我们可以使用cumusm它来获取要分割的"组".