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

在R中实现无放回多随机采样:向量分4组的问题求助

解决方案:按指定大小拆分随机样本

没问题,我来帮你搞定这个向量拆分的问题!你之前的代码之所以出问题,是因为length(M)/4得到的是657.5,用它来生成分组索引时,R会自动把它转成整数657,这样就会生成657个分组(而不是你想要的4个),完全不符合需求。接下来给你两种简单可行的方法,都能精准实现你要的3个657、1个659的随机样本拆分:

方法一:手动指定分组大小(最直观)

先把原始向量随机打乱,然后用rep()生成对应长度的分组标识,最后用split()拆分:

# 生成原始向量
M <- 1:2630
# 随机打乱向量(保证样本的随机性)
shuffled_M <- sample(M)
# 定义每个分组的大小:前3组657,最后1组659
group_sizes <- c(657, 657, 657, 659)
# 生成分组ID:重复1三次657次,重复2三次657次,以此类推
group_ids <- rep(1:4, times = group_sizes)
# 拆分向量
mysample <- split(shuffled_M, group_ids)

你可以用下面的代码验证每个分组的长度是否符合要求:

sapply(mysample, length)
# 输出结果应该是:657 657 657 659

方法二:计算拆分位置(更灵活)

如果之后需要调整分组大小,这种方法只需要修改拆分位置即可:

M <- 1:2630
shuffled_M <- sample(M)
# 计算拆分的位置点
split_points <- c(657, 657*2, 657*3)
# 拆分向量
mysample <- split(shuffled_M, findInterval(seq_along(shuffled_M), split_points))

同样用sapply(mysample, length)验证,结果和方法一一致。

这两种方法都能完美实现你的需求,而且保证了样本的随机性,你可以根据自己的习惯选择~

内容的提问来源于stack exchange,提问作者MNU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:31:56