Serguei Kaniovski
2007-Dec-04 15:49 UTC
[R] Inserting a subsequence between values of a vector
Hallo, suppose I have a vector: x <- c(1,1,1,2,2,3,3,3,3,3,4) How can I generate a vector/sequence in which a fixed number of zeroes (say 3) is inserted between the consecutive values, so I get 1,1,1,0,0,0,2,2,0,0,0,3,3,3,3,3,0,0,0,4 thanks a lot, Serguei [[alternative HTML version deleted]]
Chris Stubben
2007-Dec-04 16:27 UTC
[R] Inserting a subsequence between values of a vector
You could use a combination of rle, cumsum and append.> x <- c(1,1,1,2,2,3,3,3,3,3,4) > y<-rle(x)$lengths > y[1] 3 2 5 1> z<-cumsum(y)[y>1] > z[1] 3 5 10> > for(i in rev(z)) x <- append(x, c(0,0,0), after = i) > x[1] 1 1 1 0 0 0 2 2 0 0 0 3 3 3 3 3 0 0 0 4 Chris Serguei Kaniovski-3 wrote:> > > Hallo, > > suppose I have a vector: > > x <- c(1,1,1,2,2,3,3,3,3,3,4) > > How can I generate a vector/sequence in which a fixed number of zeroes > (say > 3) is inserted between the consecutive values, so I get > > 1,1,1,0,0,0,2,2,0,0,0,3,3,3,3,3,0,0,0,4 > > thanks a lot, > Serguei > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > >-- View this message in context: http://www.nabble.com/Inserting-a-subsequence-between-values-of-a-vector-tf4943930.html#a14154029 Sent from the R help mailing list archive at Nabble.com.
Gabor Grothendieck
2007-Dec-04 16:37 UTC
[R] Inserting a subsequence between values of a vector
Take the rle, fix up the result and take the invese.rle. Our formula adds 0's to the end too so remove those with head: head(inverse.rle(with(rle(x), list(lengths = c(rbind(lengths, 3)), values = c(rbind(values, 0))))), -3) On Dec 4, 2007 10:49 AM, Serguei Kaniovski <Serguei.Kaniovski at wifo.ac.at> wrote:> > Hallo, > > suppose I have a vector: > > x <- c(1,1,1,2,2,3,3,3,3,3,4) > > How can I generate a vector/sequence in which a fixed number of zeroes (say > 3) is inserted between the consecutive values, so I get > > 1,1,1,0,0,0,2,2,0,0,0,3,3,3,3,3,0,0,0,4 > > thanks a lot, > Serguei > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
Domenico Vistocco
2007-Dec-04 16:42 UTC
[R] Inserting a subsequence between values of a vector
library(R.utils) pos=which(diff(x)==1)+1 insert(x,ats=pos,rep(list(rep(0,3)),length(pos))) domenico vistocco Serguei Kaniovski wrote:> Hallo, > > suppose I have a vector: > > x <- c(1,1,1,2,2,3,3,3,3,3,4) > > How can I generate a vector/sequence in which a fixed number of zeroes (say > 3) is inserted between the consecutive values, so I get > > 1,1,1,0,0,0,2,2,0,0,0,3,3,3,3,3,0,0,0,4 > > thanks a lot, > Serguei > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > >