R语言如何重复运行代码并将每次迭代输出存入同一DataFrame
代码修正与需求实现方案
步骤1:修改自定义函数返回值
你现有代码的getValue()函数当前返回的是变量i,和你需要留存的per_metrics无关,先调整返回逻辑:
getValue <- function() { # 原有噪声生成、dp变量计算逻辑保持不变 mae <- mae(dp$true_norm, dp$dp_threshold_norm) rmse <- rmse(dp$true_norm, dp$dp_threshold_norm) # 给指标向量加命名,后续生成DataFrame时自动识别列名 per_metrics <- c(mae = mae, rmse = rmse) # 返回你需要留存的per_metrics return(per_metrics) }
步骤2:执行10次迭代并汇总为DataFrame
利用R原生replicate函数实现指定次数的重复运行,再把返回结果转成DataFrame即可:
# 重复运行10次,转置后每行对应1次迭代的指标结果 metrics_matrix <- t(replicate(n = 10, expr = getValue())) # 转换为DataFrame格式 final_result <- as.data.frame(metrics_matrix) # 可选:新增迭代次数字段,方便后续追溯 final_result$iteration <- 1:10
效果说明
- 重复运行逻辑由
replicate直接实现,你内置的rlaplace()噪声机制会保证每次迭代得到不同结果,不需要额外调整随机逻辑 - 最终生成的
final_result是10行的DataFrame,每行对应一次迭代的per_metrics结果,包含mae、rmse两个指标(加迭代次数字段后为3列),符合汇总需求。
内容的提问来源于stack exchange,提问作者SssssssAaaaaaa
相关产品推荐
相关产品推荐

