当向量的长度不是所需总长度的倍数时重复向量

scr*_*Owl 4 r sequence rep

我有一个 1666 行的数据框。我想添加一个具有重复序列的列,1:5以用于cut()进行交叉验证。它看起来像这样:

   Y      x1       x2       Id1
   1      .15      3.6       1
   0      1.1      2.2       2
   0      .05      3.3       3
   0      .45      2.8       4
   1      .85      3.1       5
   1      1.01     2.9       1
  ...      ...     ...      ...
Run Code Online (Sandbox Code Playgroud)

And*_*rie 8

使用(或,“更快的简化版本”)length.out的参数:rep()rep_len

> rep(1:5, length.out = 166) # or rep_len(1:5, 166)
# [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2
# [38] 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4
# [75] 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1
# [112] 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3
# [149] 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1
Run Code Online (Sandbox Code Playgroud)

length.out:非负整数。输出向量的所需长度

这是使用内置数据集 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 ...
Run Code Online (Sandbox Code Playgroud)

添加分组列:

cars$group <- rep(1:3, length.out = 50L)
Run Code Online (Sandbox Code Playgroud)

检查结果:

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
Run Code Online (Sandbox Code Playgroud)