【发布时间】:2018-12-31 14:41:09
【问题描述】:
我已经运行了各种模型(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)
【问题讨论】:
-
.Rda文件只会将保存的对象恢复到全局环境中。如果您希望能够在加载对象时将它们分配给新名称,您应该考虑使用例如.Rds文件,而不是saveRDS()。 -
您应该使用
saveRDS而不是save,如前所述。如果您使用save,请查看load的envir参数。您可以在单独的环境中恢复对象,然后随时放置,避免覆盖。