我想在列表中显示的每个数据框中的列之间找到RMSE。我写了下面的代码:
i3<-2:6
for(iter in 1:length(filenames)){ # length(filename)=45
for (i in seq_along(i3)){
RMSE<-lapply(filelist, function(x) sqrt(mean(as.numeric(x[[iter]][[7]])-as.numeric(x[[iter]][[i]]))^2))
}
}
但是这段代码不能正常工作。
数据框采用以下格式:
df1:
col2 col3 col4 col5 col6 col7
5 4 3 2 3 4
4 2 3 4 4 2
df2:
col2 col3 col4 col5 col6 col7
5 4 3 2 3 4
4 2 3 4 4 2
我希望o / p在下面的表格中:
df1:
col2 col3 col4 col5 col6 col7 RMSE(7-2) RMSE(7-3) RMSE(7-4) RMSE(7-5)
5 4 3 2 3 4 4.5 3.5 4.3 2.4
4 2 3 4 4 2 3.5 2 3.5 2.4
df2:
col2 col3 col4 col5 col6 col7 RMSE(7-2) RMSE(7-3) RMSE(7-4) RMSE(7-5)
5 4 3 2 3 4 4.5 3.5 4.3 2.4
4 2 3 4 4 2 3.5 2 3.5 2.4
提前致谢!!
答案 0 :(得分:0)
您可能希望查看purrr:map()
或map2()
在这里,我对您的代码进行了一些重构......它仍然无法正常工作,但这可能会更接近您的需求。
RMSE <- list()
for(i in 1:length(filenames)) {
df <- read.file(filenames[i])
for(j in 2:6) {
RMSE[i] <- lapply(df, fun)
}
}