R 中多个文件的数据帧上的 RSME

RSME on dataframe of multiple files in R

我的目标是将许多文件读入 R,最终,运行 每个文件中每对列的均方根误差 (rmse) 函数。 我有这个代码:

    #This calls all the files into a dataframe
filnames <- dir("~/Desktop/LGsampleHUCsWgraphs/testRSMEs", pattern = "*_45Fall_*")
    #This reads each file
read_data <- function(z){
       dat <- read_excel(z, skip = 0, ) 
       return(dat)
    }
    #This combines them into one list and splits them by the names in the first column
datalist <- lapply(filnames, read_data)
    bigdata <- rbindlist(datalist, use.names = T)
    splitByHUCs <- split(bigdata, f = bigdata$HUC...1 , sep = "\n", lex.order = TRUE)

到目前为止,一切正常。现在我想对上面创建的每个“拆分”应用 rmse [library(Metrics)] 分析。我不知道如何称呼“分裂”。在这里我使用了 names 但这是一个 R 保留字,不会起作用。我尝试了 bigdata 对象,但也没有用。我还尝试使用 splitByHUCsrMSEs.

rMSEs <- sapply(splitByHUCs, function(x) rmse(names$Predicted, names$Actual)) 
write.csv(rMSEs, file = "~/Desktop/testRMSEs.csv")

rmse 代码在我 运行 单个文件并为数据框创建名称时工作正常:

read_excel("bcc1_45Fall_1010002.xlsm")
bcc1F1010002 <- read_excel("bcc1_45Fall_1010002.xlsm")
rmse(bcc1F1010002$Predicted, bcc1F1010002$Actual)

“拆分”由“splitByHUCs”脚本命名,如下所示:

它们以它们来自的文件命名,很恰当。我需要 rmse 公式的某种参考名称,但我不知道它会是什么。有任何想法吗?谢谢。我做了一些小版本的文件,但我不知道如何在这里添加它们。

因为它是 list,我们可以像在 OP 的代码中那样用 sapply/lapply 遍历 list,但是 names$ 是不正确的,因为 lambda 函数对象是 x,表示 list 的每个元素(即 data.frame)。因此,使用 x$

而不是 names$
sapply(splitByHUCs, function(x) rmse(x$Predicted, x$Actual))