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 对象,但也没有用。我还尝试使用 splitByHUCs 和 rMSEs.
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))
我的目标是将许多文件读入 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 对象,但也没有用。我还尝试使用 splitByHUCs 和 rMSEs.
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))