将多个 .rda 文件加载到 r 中的列表中
Loading in multiple .rda files into a list in r
我有 运行 各种模型(glm、rpart、earth 等),并将每个模型的模型对象导出到我计算机上的一个文件夹中。所以我现在有一个文件夹,其中包含约 60 个不同的模型,这些模型存储为单独的 .rda 文件。
这是通过创建模型函数然后通过 purrr 映射包将其应用于模型类型列表(以避免错误和终止)来完成的。
我现在想将它们加载回 r 并进行比较。不幸的是,当我编写我的初始模型脚本时,每个模型都存储为相同的,即 "Model.Object"(我不知道该怎么做)所以当我尝试将每个模型单独加载到 r 中时,它只会相互覆盖。每个文件都保存为 glm.rda、rpart.rda、earth.rda 等,但其中的模型被标记为 Model.Object(为了说明)。
所以我想我有几个问题;
1. 可以将多个 .rda 文件加载到 r 到一个列表中,然后可以对其进行索引
2. 如何更改已应用的模型函数,以便 'model.object' 名称读取为模型类型(例如 glm、rpart 等)
代码:
Model.Function = function(Model.Type){
set.seed(0)
Model.Output = train(x = Pred.Vars.RVC.Data, y = RVC, trControl = Tcontrolparam,
preProcess = Preprocessing.Options, tuneLength = 1, metric = "RMSE",
method = Model.Type)
save(Model.Object, file = paste("./RVC Models/",Model.Type,".rda", sep = ""))
return(Model.Object)
}
Possibly.Model.Function = possibly(Model.Function, otherwise = "something wrong here")
result.possible = map(c("glm","rpart","earth"), Possibly.Model.Function)
目前,现有文件的救援操作可能看起来像这样(在@nicola 关于使用 load()
的 envir
参数的评论之后):
rda2list <- function(file) {
e <- new.env()
load(file, envir = e)
as.list(e)
}
folder <- "./RVC Models"
files <- list.files(folder, pattern = ".rda$")
models <- Map(rda2list, file.path(folder, files))
names(models) <- tools::file_path_sans_ext(files)
今后,使用 saveRDS()
将模型保存为 .Rds
文件会比使用 save()
更容易。然后在加载文件时重新分配很容易。参见例如this question and answer 了解更多详情。
我有 运行 各种模型(glm、rpart、earth 等),并将每个模型的模型对象导出到我计算机上的一个文件夹中。所以我现在有一个文件夹,其中包含约 60 个不同的模型,这些模型存储为单独的 .rda 文件。
这是通过创建模型函数然后通过 purrr 映射包将其应用于模型类型列表(以避免错误和终止)来完成的。
我现在想将它们加载回 r 并进行比较。不幸的是,当我编写我的初始模型脚本时,每个模型都存储为相同的,即 "Model.Object"(我不知道该怎么做)所以当我尝试将每个模型单独加载到 r 中时,它只会相互覆盖。每个文件都保存为 glm.rda、rpart.rda、earth.rda 等,但其中的模型被标记为 Model.Object(为了说明)。
所以我想我有几个问题; 1. 可以将多个 .rda 文件加载到 r 到一个列表中,然后可以对其进行索引 2. 如何更改已应用的模型函数,以便 'model.object' 名称读取为模型类型(例如 glm、rpart 等)
代码:
Model.Function = function(Model.Type){
set.seed(0)
Model.Output = train(x = Pred.Vars.RVC.Data, y = RVC, trControl = Tcontrolparam,
preProcess = Preprocessing.Options, tuneLength = 1, metric = "RMSE",
method = Model.Type)
save(Model.Object, file = paste("./RVC Models/",Model.Type,".rda", sep = ""))
return(Model.Object)
}
Possibly.Model.Function = possibly(Model.Function, otherwise = "something wrong here")
result.possible = map(c("glm","rpart","earth"), Possibly.Model.Function)
目前,现有文件的救援操作可能看起来像这样(在@nicola 关于使用 load()
的 envir
参数的评论之后):
rda2list <- function(file) {
e <- new.env()
load(file, envir = e)
as.list(e)
}
folder <- "./RVC Models"
files <- list.files(folder, pattern = ".rda$")
models <- Map(rda2list, file.path(folder, files))
names(models) <- tools::file_path_sans_ext(files)
今后,使用 saveRDS()
将模型保存为 .Rds
文件会比使用 save()
更容易。然后在加载文件时重新分配很容易。参见例如this question and answer 了解更多详情。