R 按1增长并获得位置的数字序列的识别

R 按1增长并获得位置的数字序列的识别,r,vector,indexing,R,Vector,Indexing,我有一个向量,它部分地包含了一系列的数字,这些数字增长了一倍,例如: x<- c(1,2,3,5,4,2,40,41,2,9,4) xx我已经编写了这个工具:cgwtools::seqle。这就像是rle但是搜索序列。对不起,伙计们,我意识到我把问题表述错了。我使用seqle得到的结果如下: library("cgwtools") x<- c(1,2,3,5,4,2,40,41,2,9,4) v<-seqle(x,incr=1)$values l<-seqle(x,in

我有一个向量,它部分地包含了一系列的数字,这些数字增长了一倍,例如:

x<- c(1,2,3,5,4,2,40,41,2,9,4)

x
x我已经编写了这个工具:
cgwtools::seqle
。这就像是
rle
但是搜索序列。

对不起,伙计们,我意识到我把问题表述错了。我使用
seqle
得到的结果如下:

library("cgwtools")
x<- c(1,2,3,5,4,2,40,41,2,9,4)
v<-seqle(x,incr=1)$values
l<-seqle(x,incr=1)$lengths

erg<-list(rep(NA),length(v))
for(i in 1:length(v))
    erg[[i]]<-seq(v[i],l[i]+v[i]-1)
库(“cgwtools”)

请使用有效的R语法提供您的输入。将其粘贴到我的R会话中会导致错误。嗨,罗兰,我删除了引号。大约是x。但是向量v1和v2是我想要得到的。我不知道如何用R代码得到它们…@JohnnyB像
rle
sekle
返回两个向量,其中一个给出每次运行的起始值,另一个给出运行的长度。因此,寻找大于1的“长度”值,并使用它们获取原始向量中的位置。@JohnnyB,这很遗憾。直到最后一行,它才给你答案,但它为你提供了一个良好的开端!
x<- c(1,2,3,5,4,2,40,41,2,9,4)
n1 <- which(c(0, diff(x))==1)
n2 <- n1-1
n <- sort(union(n1,n2))
split(n, cumsum(c(1,diff(n))!=1))
# $`0`
# [1] 1 2 3
# 
# $`1`
# [1] 7 8
library("cgwtools")
x<- c(1,2,3,5,4,2,40,41,2,9,4)
v<-seqle(x,incr=1)$values
l<-seqle(x,incr=1)$lengths

erg<-list(rep(NA),length(v))
for(i in 1:length(v))
    erg[[i]]<-seq(v[i],l[i]+v[i]-1)