如何使用R语言循环向vector存储值?抽样均值存储仅返回单值
问题原因
你现有代码的问题是每次循环都直接对xbar10整体赋值,会直接覆盖上一轮的计算结果,最终只会保留最后一次循环得到的单个均值。
解决方法
方法1:修改循环赋值逻辑(推荐预分配空间)
提前给向量分配对应长度的存储空间,每次循环给对应索引位置赋值,运行效率更高:
# 预分配长度为1000的数值型向量 xbar10 <- numeric(1000) for (i in 1:1000) { # 给第i位赋值本次抽样的均值 xbar10[i] <- mean(sample(X, 10)) }
如果要沿用你最初的动态追加写法,可修改为每次把新结果拼接到向量末尾,但迭代次数多时性能远低于预分配方案,不推荐:
xbar10 <- numeric() for (i in 1:1000) { xbar10 <- c(xbar10, mean(sample(X, 10))) }
方法2:使用R原生向量化函数(更简洁的推荐写法)
直接用replicate函数实现重复抽样计算,不需要手写循环,代码更简洁高效:
# 重复执行1000次抽样求均值的操作,结果直接汇总为向量 xbar10 <- replicate(1000, mean(sample(X, 10)))
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

