[R] strange algorithm needed
Gavin Simpson
gavin.simpson at ucl.ac.uk
Wed Nov 1 15:50:46 CET 2006
On Wed, 2006-11-01 at 09:36 -0500, Mark.Leeds at MorganStanley.com wrote:
>
> i need a strange algorithm that i can easily do in a loop but need
> o do without looping.
>
> suppose i have a vector of length y filled with zeros and a number x.
>
> then, i want a new vector which is (1,......x,1......x,1.....x,1.....y mod
> x )
>
> so if y was of length 17 and x was 3, the resultant vector should be
>
> (1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2)
>
> so basically , the algorithm should repeat seq(1,x) as many times as
> needed to fill y but
> then , if the last one doesn;'t fit perfectly, it should stop whenever it
> hits the end of y ?
>
> rep(seq(1:x,length(y)/x) will work when there is a perfect fit but
> it can't handle the non fit cases. it just cuts
> off the non integer part of length(y)/x and then fills the vector
> do that the resultant vector is less than the length of y.
?rep, in particular the length.out argument. Using this, your desired
output is easily achieved:
> Y <- rep(0, 17)
> X <- 3
> Y <- rep(1:X, length.out = length(Y))
> Y
[1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2
> yours <- c(1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2)
> all.equal(yours, Y)
[1] TRUE
HTH
G
>
> thanks.
>
> ______________________________________________
> R-help at stat.math.ethz.ch 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.
--
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
Gavin Simpson [t] +44 (0)20 7679 0522
ECRC [f] +44 (0)20 7679 0565
UCL Department of Geography
Pearson Building [e] gavin.simpsonATNOSPAMucl.ac.uk
Gower Street
London, UK [w] http://www.ucl.ac.uk/~ucfagls/
WC1E 6BT [w] http://www.freshwaters.org.uk/
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
More information about the R-help
mailing list