【发布时间】:2021-10-23 05:48:26
【问题描述】:
我要问两个问题:
- 如何多次运行一个代码?
- 如何将每次迭代的输出存储在同一个数据帧中?
我的代码中有 3 个输出:mae、rmse 和 per_metrics。我只希望 per_metrics 作为每次迭代的最终输出,并将每个 per_metics 的结果存储为所有迭代的整体输出。
getValue <- function() {
mae <- mae(dp$true_norm, dp$dp_threshold_norm)
rmse <- rmse(dp$true_norm, dp$dp_threshold_norm)
per_metrics <- c(mae,rmse)
return(i)
}
result <- replicate(10, getValue())
注意迭代次数 = 10
这只是我的代码的一部分,我对所有迭代都有相同的输入,但在输入和输出之间有一个噪声添加机制rlaplace()。所以每次迭代都会得到不同的结果。
【问题讨论】:
-
查看
replicate、sapply和lapply的文档。 -
要补充 Roman,请检查您的功能和使用
{modelr}。mae()和rmse()期待模型和数据。该文档显示了一个示例。如果您想使用相同的输入运行getValue()函数,您将生成相同的结果。per_metrics(返回)变量当前是一个向量,即用 c() 构造。因此,考虑将其编码为数据框。由于 R 内存管理有点不礼貌,因此“增长”数据帧不是最佳实践。但是对于 10 次迭代,它将起作用。请注意,这样循环,result[i,] -
@Ray,可能 OP 正在使用 Metrics 包
-
在另一种情况下,您的函数将在任何情况下返回相同的结果,除非输入被更改。
-
我每次迭代都有相同的输入,但我每次都添加随机噪声,所以我得到不同的结果,因此 MAE 和 RMSE 不同。