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

R语言模拟患者数据集报错及可复现性问题求助

修正R语言模拟患者数据集的代码问题

原代码的核心错误

  • rep()函数用法错误:rep("control", "treatment")的第二个参数必须是重复次数(数值),不能传入字符串,这会直接导致数据框创建失败。
  • sample()未指定样本量且未允许重复:比如sample(20:75)默认只生成56个不重复值(20到75共56个数字),但要生成100条数据,必须指定size=100并开启replace=TRUE(允许重复取值)。
  • set.seed()位置不对:必须放在所有随机生成代码的最开头,才能让所有随机过程的结果完全可复现。
  • 依赖未声明且思路冗余:sample_n()是dplyr包的函数,未加载包会报错,且原思路“先创建数据集再抽样”完全没必要,直接生成100条数据更高效。

修正后的可运行代码(Base R版本,无需额外包)

# 设置随机种子,必须放在所有随机操作最前面,保证每次运行结果一致
set.seed(30)

# 直接生成100条模拟患者数据
pulse_sim <- data.frame(
  # 按1:1比例生成对照组和治疗组,共100条
  group = rep(c("control", "treatment"), each = 50),
  # 从20-75岁中随机抽取100个值,允许重复
  age = sample(20:75, size = 100, replace = TRUE),
  # 随机生成性别,可通过prob调整比例(这里是1:1)
  gender = sample(c("male", "female"), size = 100, replace = TRUE, prob = c(0.5, 0.5)),
  # 生成40-120的静息心率
  resting_pulse = sample(40:120, size = 100, replace = TRUE),
  # 生成140-220cm的身高
  height_cm = sample(140:220, size = 100, replace = TRUE)
)

# 查看前6条数据验证结果
head(pulse_sim)

代码说明

  • 调整分组比例:如果需要非1:1的分组,比如60个对照组、40个治疗组,把group行改成rep(c("control", "treatment"), times = c(60, 40))即可。
  • 控制重复取值:如果某个变量的取值范围足够大(比如超过100个不同值),可以去掉replace=TRUE,生成不重复的随机值。
  • 性别比例调整:修改prob参数的数值就能改变男女比例,比如prob = c(0.6, 0.4)表示60%男性、40%女性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:45:40