Search code examples
rvectornumbersreplicate

Generating a vector with n repetitions of x, then y, then z, with a fixed upper bound


I am trying to create a vector where I have 3 repetitions of the number 1, then 3 repetitions of the number 2, and so on up to, for instance, 3 repetitions of the number 36.

c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5...)

I have tried the following use of rep() but got the following error:

Error in rep(3, seq(1:36)) : argument 'times' incorrect

What formulation do I need to use to properly generate the vector I want?


Solution

  • sort(rep(1:36, 3))
    

    Or even better as @Wimpel mentioned in the comments, use the each argument of the rep function.

    rep(1:36, each = 3)
    

    output

    # [1]  1  1  1  2  2  2  3  3  3  4  4  4  5  5  5  6  6  6  7  7  7  8  8  8  9  9  9 10 10 10 11 11 11 12 12 12 13 13 13 14 14 14 15 15 15 16 16 16 17 17 17 18 18 18 19 19 19 20 20 20 21 21 21 22
    #  [65] 22 22 23 23 23 24 24 24 25 25 25 26 26 26 27 27 27 28 28 28 29 29 29 30 30 30 31 31 31 32 32 32 33 33 33 34 34 34 35 35 35 36 36 36