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

R语言:如何在for循环每次迭代中计算均值并保存为数据框?

解决R语言循环计算均值并保存为data.frame的问题

修改思路

原代码的问题是循环中每次生成的x3会被覆盖,且未保存每次计算的均值。我们需要先初始化存储均值的容器,再在循环中逐步填充数据,最后转换为结构化的data.frame。

修改后的循环实现代码

V_max=15
H=1
n=1
C=c(0,0.01,0.1,1)

fun <- function( C, H, n ){
  2 / (3 + (C / H)^n) 
}

# 初始化与C长度一致的向量,用于存储每次迭代的均值
mean_values <- numeric(length(C))

for(i in 1:length(C)){
  V_C <- V_max*fun(C[i],H,n)
  x3 <- rnorm(1000,V_C,1)
  # 计算当前样本的均值并保存到向量中
  mean_values[i] <- mean(x3)
}

# 将C值和对应均值组合成data.frame
result_df <- data.frame(
  C_value = C,
  mean_x3 = mean_values
)

# 查看最终结果
print(result_df)

更简洁的向量化实现(推荐)

R语言更推崇向量化编程,用sapply可以替代手动循环,代码更简洁高效:

V_max=15
H=1
n=1
C=c(0,0.01,0.1,1)

fun <- function( C, H, n ){
  2 / (3 + (C / H)^n) 
}

# 直接遍历C的每个元素,计算对应均值并生成data.frame
result_df <- data.frame(
  C_value = C,
  mean_x3 = sapply(C, function(c_val) {
    V_C <- V_max*fun(c_val, H, n)
    mean(rnorm(1000, V_C, 1))
  })
)

print(result_df)

关键说明

  • 两种方法最终都会生成包含两列的data.frame:C_value是输入的C向量值,mean_x3是对应每次生成1000个正态分布样本的均值。
  • 向量化方法(sapply)避免了手动管理循环索引,代码更易读且符合R的编程习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:55:37