簡體   English   中英

發現較小數目時分割向量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM