我有一个向量,它部分包含以一个增长的数字序列,例如:
x<- c(1,2,3,5,4,2,40,41,2,9,4)
序列“1,2,3”和“40,41”是auch序列。我想要的是每个这样的序列产生一个载体,它需要主要载体中每个元素的位置(hier“x”)。对于给定的考试,它将是两个向量:
v1<-c(1,2,3) # for the sequence 1, 2 and 3 in x and
v2<-c(7,8) # for the sequence 40 and 41 in x.
我怎样才能在R中完成它?
答案 0 :(得分:2)
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
答案 1 :(得分:1)
我写过这个工具:cgwtools::seqle
。它就像rle
,但搜索序列。
答案 2 :(得分:0)
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)