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

如何通过Monte Carlo Simulation在R语言中从iris数据集采样50条样本?

使用蒙特卡洛模拟从iris数据集抽取50个实例(R语言实现)

嗨,这事儿其实挺直观的,我来一步步给你讲清楚怎么实现~蒙特卡洛模拟在这里的核心就是重复做随机抽样试验——我们会多次从iris的150个实例里随机抽50个,每次抽样独立,这样就能得到多组结果用于后续分析。

方法一:基础循环实现(无需额外包)

如果不想加载第三方包,用基础R就能搞定:

# 设置随机种子(保证结果可复现,这步非常重要!)
set.seed(123)

# 定义蒙特卡洛模拟的次数,比如我们做100次抽样
n_simulations <- 100

# 创建空列表存储每次抽样的结果
sampled_data_list <- list()

# 循环执行抽样
for (i in 1:n_simulations) {
  # 从iris中无放回抽取50行(因为总共有150个实例,抽50个不需要重复)
  sampled_data <- iris[sample(nrow(iris), size = 50, replace = FALSE), ]
  # 把抽样结果存入列表
  sampled_data_list[[i]] <- sampled_data
}

# 查看第1次抽样的前几行结果(示例)
head(sampled_data_list[[1]])

方法二:用purrr包简化代码(更清爽高效)

如果你熟悉tidyverse生态,用purrr的map函数可以避免写循环,代码更简洁:

# 先安装并加载purrr包(没安装的话先跑install.packages("purrr"))
library(purrr)

set.seed(123)
n_simulations <- 100

# 用map函数批量生成抽样结果
sampled_data_list <- map(1:n_simulations, ~ iris[sample(nrow(iris), 50, replace = FALSE), ])

# 查看第5次抽样的前几行
head(sampled_data_list[[5]])

关键细节提醒

  • set.seed():一定要设置随机种子,这样每次运行代码得到的抽样结果完全一致,方便调试和复现。
  • replace=FALSE:这里用无放回抽样,因为我们要从150个实例里抽50个不重复的;如果你的需求是允许重复抽样(比如抽样数量超过总实例数),就改成replace=TRUE。
  • 用列表存结果:每次抽样得到的都是一个数据框,列表是最适合存储多个数据框的结构,后续你可以用lapply或purrr的函数批量处理所有抽样结果(比如计算每组的均值、方差等)。

后续分析小示例

比如你想计算每次抽样中Sepal.Length的均值:

# 用purrr批量计算每组抽样的Sepal.Length均值
mean_sepal_length <- map_dbl(sampled_data_list, ~ mean(.$Sepal.Length))

# 查看前10个均值结果
head(mean_sepal_length, 10)

有其他疑问随时说哦~

内容的提问来源于stack exchange,提问作者Twk Wei Keong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:42:38