[英]Split vector when a smaller number is found
假設我有一個向量
v <- c(2, 3, 5, 11, 3, 19, 20, 88, 20, 22)
我希望當一個數字小於矢量中它前面的數字時它們分開
2, 3, 5, 11
3, 19, 20, 88
20, 22
我已經嘗試了幾種方法,但是,對於這種語言來說,我還是很陌生。 我嘗試將每個元素減去下一個並得到負數的索引,這給了我應該分割矢量的索引,但是我還沒有找到如何使用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
從概念上講,它類似於您的想法。 diff
負責將每個元素減去下一個元素。 diff(v) < 0
創建邏輯向量。 c(1, diff(v) < 0)
將其轉換為1s和0s的向量,我們可以使用cumusm
來獲取要進行拆分的“組”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.