我已经构建了10个模型,并按如下方式生成预测:
M1 M2 M3 M4 M5 M6 M7 M8 M9 M10
1 9.546223 8.713140 8.736672 8.711169 8.719074 8.696506 8.849216 8.685843 8.720186 8.707842
2 9.333491 8.633371 8.703537 8.659186 8.652638 8.651705 8.685260 8.651955 8.665795 8.660157
3 10.134578 8.621685 8.707592 8.657538 8.646744 8.660359 8.723335 8.659033 8.666371 8.659188
4 11.693361 8.606719 8.702254 8.637670 8.627075 8.596533 8.727353 8.610436 8.662495 8.636437
我想逐列迭代并计算RMSE,我尝试了以下但是它打印了相同的值:
for(i in names(df)) {
x = df$i
print(sqrt(mean((x-test$value)^2)))
}
最好的方法是什么?
答案 0 :(得分:1)
无需使用for
循环。如果要对数据框的每一列执行相同的操作,请使用lapply
。
RMSE <- function (x, test) sqrt(mean((x-test$value)^2))
x <- lapply(df, FUN = RMSE, test)
默认情况下,lapply
会返回一个列表。
如果您需要数据框,请执行as.data.frame(x)
;
如果您想要矢量,请执行unlist(x)
。