Repeat vector when its length is not a multiple of desired total length

Use the length.out argument of rep() or rep_len (a “faster simplified version” [of rep]):

length.out: non-negative integer. The desired length of the output vector

Here is an example using the built-in dataset cars.

str(cars)
'data.frame':   50 obs. of  2 variables:
 $ speed: num  4 4 7 7 8 9 10 10 10 11 ...
 $ dist : num  2 10 4 22 16 10 18 26 34 17 ...

Add grouping column:

cars$group <- rep(1:3, length.out = 50L)

Inspect the result:

head(cars)
  speed dist group
1     4    2     1
2     4   10     2
3     7    4     3
4     7   22     1
5     8   16     2
6     9   10     3

tail(cars)
   speed dist group
45    23   54     3
46    24   70     1
47    24   92     2
48    24   93     3
49    24  120     1
50    25   85     2

Leave a Comment