R:迭代列并计算错误率

时间:2016-04-04 06:49:28

标签: r dataframe

我已经构建了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)))

}

最好的方法是什么?

1 个答案:

答案 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)