You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从已分块变量集中随机创建等大小的新变量块?

解决均匀随机分配变量块的问题

我懂你的需求啦——你需要把20个变量均匀分配到4个随机块中,每个块刚好包含5个变量,而之前用sample(x = 1:p, size = n, replace = TRUE)的方法会因为有放回抽样导致块大小不均,这显然不是你想要的结果。

正确的实现方法

核心思路是先创建一个包含每个块编号、且每个编号恰好重复5次的向量,再打乱这个向量的顺序,这样就能保证每个块最终刚好分配到5个变量:

# 可选:设置随机种子,让结果可复现
set.seed(123)
# 生成每个块编号重复5次的向量,再随机打乱顺序
block_assignments <- sample(rep(1:4, each = 5))
# 查看结果
block_assignments

运行这段代码后,你会得到类似这样的输出(因为随机打乱,每次结果会有差异,但每个块的数量一定是5):

[1] 4 1 2 1 4 2 3 1 2 3 2 1 4 3 1 2 3 3 4 4

验证结果

你可以用table()函数确认每个块的变量数量确实是5:

table(block_assignments)

输出会是:

block_assignments
1 2 3 4 
5 5 5 5 

为什么原来的方法不行?

你之前用的sample(x = 1:4, size = 20, replace = TRUE)是有放回随机抽样,这意味着每个位置选择块编号时都是独立的,最终每个块的变量数量会是随机波动的(比如有的块可能有7个,有的只有3个),无法保证严格的等大小分配。

内容的提问来源于stack exchange,提问作者Ph.D.Student

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:17:14