[R] shifted window of string

Peter Alspach Peter.Alspach at plantandfood.co.nz
Tue Jun 15 07:06:34 CEST 2010


Tena koe David

Something like:

matrix(v[1:win + rep(seq(0, (length(v)-5), shift), each=win)], ncol=win,
byrow=TRUE)

should work (I haven't tested it fully).  Note it gives a different
answer to your m since I think the last line of your m is incorrect.

HTH ....

Peter Alspach

> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of david hilton shanabrook
> Sent: Tuesday, 15 June 2010 3:47 p.m.
> To: r-help at r-project.org
> Subject: [R] shifted window of string
> 
> basically I need to create a sliding window in a string.  a way to
> explain this is:
> 
> > v <-
>
c("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","
> r","s","t","u","v","w","x","y")
> > window <- 5
> > shift <- 2
> 
> I want a matrix of characters with "window" columns filled with "v" by
> filling a row, then shifting over "shift" and continuing to the next
> row until "v" is exhausted.  You can assume "v" will evenly fit "m"
> 
> so the result needs to look like this matrix where each row is shifted
> 2 (in this case):
> 
> > m
>       [,1] [,2] [,3] [,4] [,5]
>  [1,] "a"  "b"  "c"  "d"  "e"
>  [2,] "c"  "d"  "e"  "f"  "g"
>  [3,] "e"  "f"  "g"  "h"  "i"
>  [4,] "g"  "h"  "i"  "j"  "k"
>  [5,] "i"  "j"  "k"  "l"  "m"
>  [6,] "k"  "l"  "m"  "n"  "o"
>  [7,] "m"  "n"  "o"  "p"  "q"
>  [8,] "o"  "p"  "q"  "r"  "s"
>  [9,] "q"  "r"  "s"  "t"  "u"
> [10,] "s"  "t"  "u"  "v"  "w"
> [11,] "t"  "u"  "v"  "w"  "x"
> 
> This needs to be very efficient as my data is large, loops would be
too
> slow.  Any ideas?  It could also be done in a string and then put into
> the matrix but I don't think this would be easier.
> 
> I will want to put this in a function:
> 
> shiftedMatrix <- function(v, window=5, shift=2){...
> 
> return(m)}
> 
> thanks
> 
> dhs
> 	[[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.



More information about the R-help mailing list