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

使用rnorm函数模拟实验大鼠体重数据集时遇到语法错误求解

R批量生成大鼠体重模拟数据方案

方案1:mapply实现(简洁高效,推荐)

通过mapply多参数迭代功能,直接匹配两个数据框的对应值作为参数批量生成随机数:

# 按行优先顺序展平均值、标准差数据框(匹配你给出的调用顺序:先遍历同一周的所有组,再遍历下一周)
mean_vec <- as.vector(t(Mean_Data))
sd_vec <- as.vector(t(STD_Data))

# 批量生成随机数,返回列表的每个元素对应一组50个模拟值
sim_result <- mapply(function(m, s) rnorm(n = 50, mean = m, sd = s), mean_vec, sd_vec)

# 可选:给结果列命名,格式为「第X周_第Y组」,方便后续调用
week_tag <- paste0("Week", rep(1:15, each = 4))
group_tag <- paste0("Group", rep(1:4, times = 15))
colnames(sim_result) <- paste(week_tag, group_tag, sep = "_")

方案2:嵌套循环实现(逻辑直观,易修改)

如果你更熟悉循环逻辑,可使用双层循环逐行逐列遍历参数:

# 初始化结果存储列表
sim_result <- list()
index <- 1

# 外层遍历15个周次
for (week in 1:nrow(Mean_Data)) {
  # 内层遍历4个实验组
  for (group in 1:ncol(Mean_Data)) {
    sim_result[[index]] <- rnorm(50, mean = Mean_Data[week, group], sd = STD_Data[week, group])
    names(sim_result)[index] <- paste0("Week", week, "_Group", group)
    index <- index + 1
  }
}

# 可选:将列表转换为数据框,每列对应一组模拟值
sim_df <- do.call(cbind, sim_result)

注意事项

  • 运行代码前请确认STD_Data中没有负数值,标准差为负会导致rnorm函数报错
  • 后续如果新增实验组,只需调整Mean_Data和STD_Data的列数,代码逻辑无需修改即可直接运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 14:12:05