想要在数据框列表中找到列差异

时间:2017-08-18 19:25:05

标签: r lapply

我想在列表中显示的每个数据框中的列之间找到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

提前致谢!!

1 个答案:

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