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

从d3无放回抽取3个观测值并与d2合并的R代码问题求助

解决无放回抽样并合并数据框的问题

我来帮你搞定这个问题!你的核心问题是每次循环都把合并结果覆盖到同一个变量里,最后只能得到最后一次循环的结果,而不是3个独立的数据框。咱们来一步步修正:

首先先把你的数据集定义好(方便复现):

d1 <- c(2, 3, 8) 
d2 <- data.frame(d1) 
d1 <- c(1, 7, 9, 10) 
d3 <- data.frame(d1)

原代码的问题

你写的for循环里,每次生成的merge都会覆盖上一次的结果,循环结束后只会剩下第三次抽样合并的数据框,没法保存三次的结果。

修正后的代码

我们可以用一个列表来存储每次循环的结果,这样就能保留3个独立的数据框了:

# 创建一个空列表来存储3次的结果
result_list <- list()

for (r in 1:3) {
  # 直接从d3中无放回抽取3行,不用手动写索引1:4
  sam <- d3[sample(nrow(d3), 3, replace = FALSE), , drop = FALSE]
  # 将抽样结果和d2合并,并存入列表的对应位置
  result_list[[r]] <- rbind(d2, sam)
}

代码解释

  • nrow(d3):获取d3的行数(这里是4),这样代码更灵活,就算d3行数变了也不用改数字
  • drop = FALSE:确保抽样后得到的还是数据框,而不是向量(避免rbind时出错)
  • result_list[[r]]:把每次合并好的数据框存入列表的第r个位置,这样循环结束后,result_list[[1]]、result_list[[2]]、result_list[[3]]就是你要的3个各含6个观测值的数据框

你可以用result_list来查看所有结果,或者单独提取某一个,比如print(result_list[[1]])就能看到第一次的合并结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:17:16