Re: [R] A particular shuffling on a vector

2007-04-19 Thread Peter Alspach

Emmanuel

One option which appears to work:

emmanuel <- c(1,1,1,2,2,3,3,3)
#emmanuel <- c(1,1,2,3,4,5,6,6,6,6,6,6,6,6,7,8)
runs <- rle(emmanuel)[[1]]
shuffle <- sample(1:length(runs))
newEmm <- rep(emmanuel[cumsum(runs)[shuffle]], runs[shuffle])
startPos <- sample(1:length(emmanuel), 1)
if (startPos==1) newEmm else
newEmm[c(startPos:length(newEmm),1:(startPos-1))]

Peter Alspach

> -Original Message-
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of Emmanuel Levy
> Sent: Friday, 20 April 2007 1:03 p.m.
> To: r-help@stat.math.ethz.ch
> Subject: [R] A particular shuffling on a vector
> 
> Hello,
> 
> I was wondering if anyone can think of a straightforward way (without
> loops) to do the following shuffling:
> 
> Let's imagine a vector:
> c(1,1,1,2,2,3,3,3)
> 
> I would like to derive shuffled vectors __where the same 
> digits are never separated__, although they can be at both 
> ends (periodicity).
> 
> So the following shuffled vectors are possible:
> 
> c(2,2,1,1,1,3,3,3)
> c(2,1,1,1,3,3,3,2)
> c(3,3,3,1,1,1,2,2)
> c(3,1,1,1,2,2,3,3)
> etc ...
> 
> I should mention that there can be any number of different 
> numbers, and any number of repetition of each number.
> 
> So the vectors I have to deal with could look like
> c(1,1,2,3,4,5,6,6,6,6,6,6,6,6,7,8) for example
> 
> Since I have to derive many shuffled versions for each 
> vector, I am looking for an efficient way of doing it. Can 
> you think of a way without nested loops?
> 
> Many thanks for your help,
> 
> Best,
> 
> Emmanuel
> 
> __
> R-help@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.
> 

__

The contents of this e-mail are privileged and/or confidenti...{{dropped}}

__
R-help@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.


[R] A particular shuffling on a vector

2007-04-19 Thread Emmanuel Levy
Hello,

I was wondering if anyone can think of a straightforward way (without
loops) to do the following shuffling:

Let's imagine a vector:
c(1,1,1,2,2,3,3,3)

I would like to derive shuffled vectors __where the same digits are
never separated__, although they can be at both ends (periodicity).

So the following shuffled vectors are possible:

c(2,2,1,1,1,3,3,3)
c(2,1,1,1,3,3,3,2)
c(3,3,3,1,1,1,2,2)
c(3,1,1,1,2,2,3,3)
etc ...

I should mention that there can be any number of different numbers,
and any number of repetition of each number.

So the vectors I have to deal with could look like
c(1,1,2,3,4,5,6,6,6,6,6,6,6,6,7,8) for example

Since I have to derive many shuffled versions for each vector, I am
looking for an efficient way of doing it. Can you think of a way
without nested loops?

Many thanks for your help,

Best,

Emmanuel

__
R-help@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.