I agree with Bert. It is not clear what is generating a need for this sequence, so it
is difficult to see what aspects need to be adjustable. If this specific
sequence is the only one you need, then Bert's code looks "elegant" to me.

One note: "c" is a base function in R. Functions in R are first-class objects. It is really confusing and just a bad idea to create a vector named "c" and then call "c" as well. I have used uppercase variable names to alleviate this problem.

A <- 4
B <- 3
C <- 2

# Minutely more efficient version of OP code:
c( rep( seq.int( B )        , each=C, times=A )
 , rep( seq.int( C ) + B    , each=A, times=B )
 , rep( seq.int( A ) + B + C, each=B, times=C )
 )

# Excessively flexible version of OP code (can make V longer):
V <- c( A, B, C )
M <- cbind( embed( c( V[ -1 ], V ), length( V ) ), cumsum( V ) - V[ 1 ] )
do.call( c
       , lapply( seq.int( nrow( M ) )
, function( i ) { rep( seq.int( M[ i, 3 ] ) + M[ i, 4 ], each=M[ i, 2 ], times=M[ i, 1 ] ) }
               )
       )

Please post using plain text format to insure that we see what you see, since the mailing list WILL remove HTML.

On 2015-05-23 12:52, Bert Gunter wrote:
Elegance is in the eye of the beholder.

But I would have thought that anything you do would be some variation of:

c(rep(1:3,e=2,time=4),
rep(4:5,e=4,time=3),
rep(6:9,e=3,time=2) )

## yielding

 [1] 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3 4 4 4 4 5 5 5 5 4
4 4 4 5 5 5 5 4
[42] 4 4 4 5 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 6 6 6 7 7 7 8 8 8 9 9 9

Cheers,
Bert

Bert Gunter
Genentech Nonclinical Biostatistics
(650) 467-7374

"Data is not information. Information is not knowledge. And knowledge
is certainly not wisdom."
Clifford Stoll




On Sat, May 23, 2015 at 7:55 AM, Kathryn Lord
<kathryn.lord2...@gmail.com> wrote:
Dear R users,

I'd like to create a sequence/vector, for example,

1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2 2 3 3 4 4 4 4 5 5 5 5 4 4 4 4 5 5 5 5 4 4 4 4 5 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 6 6 6 7 7 7 8 8 8 9
9 9

So I did like this below.

a <- 4
b <- 3
c <- 2

grp <- c( rep(1:b, each=c, times=a), rep(1:c, each=a, times=b)+b, rep(1:a,
each=b, times=c)+b+c )

I wonder if there is a more elegant way to do this?

Any suggestions? Thank you!

Best wishes

Kathie

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to