R语言无放回随机年份分组:替代手动采样的更优方案?
更高效的分组实现方式
你可以通过随机打乱向量后按指定长度拆分的方式,替代手动重复采样,代码更简洁且不易出错:
- 首先对原向量做无放回随机重排:
g <- 1979:2020 sampled_g <- sample(g) # 一次性完成无放回随机排序
- 定义各分组的长度:8个4年组 + 2个5年组
group_sizes <- c(rep(4, 8), rep(5, 2))
- 按设定长度拆分向量,得到分组列表:
result_groups <- split(sampled_g, rep(1:length(group_sizes), group_sizes))
代码说明
sample(g)直接完成整个向量的无放回随机重排,省去了手动逐个抽取、更新剩余向量的重复操作。rep(1:length(group_sizes), group_sizes)生成对应分组的索引标记(比如前4个元素标记为1,接下来4个标记为2,以此类推),split函数根据这个标记自动拆分向量为指定长度的组。- 最终
result_groups是一个列表,你可以通过result_groups[[1]]、result_groups[[2]]等方式直接访问各组内容。
内容的提问来源于stack exchange,提问作者lola
相关产品推荐
相关产品推荐

