我有一个 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)
使用(或,“更快的简化版本”)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)