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

R语言计算多组样本均值向量的总均值 解决代码输出NA问题

错误原因
  • 核心报错原因:代码里的name对象存的是"V1"、"V2"这类字符串,不是你通过assign()创建的实际二项分布样本,直接对字符串求均值会返回NA。
  • 逻辑错误:循环内每次执行avgs = c(mean(name[i]))都会覆盖上一轮的avgs值,最终avgs只会保留最后一轮循环的结果,根本存不下8820个样本的均值。
  • 冗余操作:逐一生成V1到V8820的独立变量完全没必要,会额外占用大量内存,还会增加取值的复杂度。
修正代码

直接预分配存储均值的数组,循环内生成样本后直接计算均值存入数组,不需要创建多余的全局变量,运行效率更高:

set.seed(1865)
# 预分配长度为8820的数值型向量,存储所有样本的均值
all_means <- numeric(8820)

for(i in 1:8820){
  # 直接生成单组样本,临时存储即可
  current_sample <- rbinom(n = 139, size = 46, prob = 0.83)
  # 计算当前样本的均值,存入向量对应位置
  all_means[i] <- mean(current_sample)
}

# 计算所有样本均值的总平均值
total_avg <- mean(all_means)
print(total_avg)

如果你一定要保留逐一生成Vx命名变量的写法,需要用get()函数根据字符串取出对应的实际样本对象,同时逐次追加均值到avgs向量(非常不推荐这种写法,内存占用远高于上面的实现):

set.seed(1865)
avgs <- c()
for(i in 1:8820){
  var_name <- paste0("V", i)
  assign(var_name, rbinom(139, 46, 0.83))
  avgs <- c(avgs, mean(get(var_name)))
}
avg <- mean(avgs)
print(avg)

内容的提问来源于stack exchange,提问作者A Burial At Ornans

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:57:29