An embedded and charset-unspecified text was scrubbed... Name: not available Url: https://stat.ethz.ch/pipermail/r-help/attachments/20071204/a69df9ef/attachment.pl
Inserting a subsequence between values of a vector
4 messages · Serguei Kaniovski, Chris Stubben, Gabor Grothendieck +1 more
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.
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.
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.