R语言中1000次重复试验平均值计算问题求助
解决你的R代码累加计算平均值问题
我来帮你排查下问题!你的代码现在只返回单次试验结果,主要是几个小细节没处理对,咱们一步步修正:
你的代码存在的问题
- 没有初始化累加变量:第一次循环时
value还没定义,R不知道怎么累加,得先给它设初始值0。 - 累加语法错误:
value =+ y不是R的正确写法,应该用value <- value + y来逐步累加每次试验的y值。 - 缺少最终计算与输出:循环结束后没把累加的总和除以1000得到平均值,也没打印结果。
- 额外的笔误:
stimateM看起来是拼写错误,而且这里完全多余,直接计算mhat就好。
修正后的for循环版本
# 初始化累加变量为0,确保第一次循环能正常累加 total_error <- 0 for(i in 1:1000) { # 从1-500无放回抽取30个样本 x <- sample(1:500, 30, replace = FALSE) # 计算估计值mhat mhat <- 2 * mean(x) - 1 # 计算当前试验的误差绝对值 current_error <- abs(mhat - 500) # 累加误差 total_error <- total_error + current_error } # 计算并打印1000次试验的平均误差 average_error <- total_error / 1000 print(average_error)
更简洁的R风格写法(推荐)
R里更习惯用向量化函数代替for循环,replicate可以帮你一次性完成重复试验,代码更简洁高效:
# 重复1000次试验,收集所有误差值到向量中 all_errors <- replicate(1000, { x <- sample(1:500, 30, replace = FALSE) mhat <- 2 * mean(x) - 1 abs(mhat - 500) }) # 直接用mean()计算平均值 average_error <- mean(all_errors) print(average_error)
这两种写法都能得到你想要的1000次试验的平均误差结果,后者更符合R的编程习惯,运行效率也更高哦~
内容的提问来源于stack exchange,提问作者O. Santos
相关产品推荐
相关产品推荐

