R:如何在数组中查找非顺序元素

Mik*_*ike 5 arrays r sequential

我有一个包含多个数字的数组,我事先不知道这些数字是什么.我想将数组中与前一个数字不连续的数字分开(除了序列中的第一个数字).

例如:数组: 2 3 4 5 10 11 12 15 18 19 20 23 24

我想回来 2 10 15 18 23

原始数组可以是可变长度的,包括长度为零

谢谢

akr*_*run 11

尝试

 v1 <- c(2:5,10:12,15, 18:20, 23:24)
 v1[c(TRUE,diff(v1)!=1)]
#[1]  2 10 15 18 23
Run Code Online (Sandbox Code Playgroud)

更新

如果您想获得最后一个序号,请尝试

v1[c(diff(v1)!=1, TRUE)]
#[1]  5 12 15 20 24
Run Code Online (Sandbox Code Playgroud)


Car*_*oft 5

奇怪的是:-),我来介绍一下我的作品之一: cgwtools:seqleseqle的工作原理类似,rle但返回序列运行,而不是重复运行。

 foo<- c(2,3,4,5,10,11,12,15,18,19,20,23,24)
 seqle(foo)
Run Length Encoding
  lengths: int [1:5] 4 3 1 3 2
  values : num [1:5] 2 10 15 18 23
Run Code Online (Sandbox Code Playgroud)