如果我想得到一个依次叠加站位数时这1000次循环的平均值应该在哪添加什么语句

我想得到外部循环叠加站位数抽样时,他每次叠加完成内部循环1000次之后的一个平均值,应该在哪里添加什么语句

img

该回答引用GPTᴼᴾᴱᴺᴬᴵ
你可以在内部循环中加一个变量avg,用来记录每次抽样的平均值,然后在内部循环结束后把这个平均值累加到一个变量sum_avg中。最后在外部循环结束后,用sum_avg除以循环次数1000就可以得到所有平均值的平均值了。下面是修改过的代码示例:

library(dp_lyr)
library(vegan)
winter <- read.csv("D202204.csv", header=T, row.names=1)
winter_true <- mean(winter$Swinter)

avg_sum <- 0 # 用来累加每次内部循环的平均值
Biomass_cal <- NULL
Biomass_RB_cal <- 0
for (a in 1:15) {
  for (n in 1:1000) {
    sam <- sample_n(winter, a, replace=F) # 从站位1-20各抽取1000次模拟数据
    avg <- mean(sam$Swinter) # 计算每次抽样的平均值
    avg_sum <- avg_sum + avg # 累加平均值
    Biomass_estimate <- avg
    Biomass_cal <- rbind(Biomass_cal, Biomass_estimate)
    Biomass_RB_cal <- Biomass_RB_cal + Biomass_estimate
  }
  
  SD_Biomass <- sd(Biomass_cal)
  CV_Biomass <- SD_Biomass / mean(Biomass_cal) * 100
  REE_Biomass <- sqrt(sum(Biomass_cal^2)/1000)/winter_true
  RB_Biomass <- (Biomass_RB_cal/1000 - winter_true)/winter_true * 100
  
  # 输出每个站位数的统计结果
  bio_estimate <- data.frame(REE_Biomass, RB_Biomass, CV_Biomass)
  write.table(bio_estimate, "winter_biomass_estimate.csv",
              sep=",", append=T, row.names=F, col.names=F)
  
  # 计算完一次内部循环后输出平均值
  cat(sprintf("平均值:%f\n", avg_sum/1000))
  avg_sum <- 0 # 重置累加器
}


这个代码会在每次内部循环结束后输出一次平均值,最后输出所有平均值的平均值。