首页 > 解决方案 > 将 .rda 分配给一个对象并在 R 中的该对象中使用 predict

问题描述

我使用一些数据创建了一个模型。说我的模型是

x_glm<-glm(X~Y+Z)

现在我保存了 x_glm

   save(x_glm, "/home/Dav/x_glm.rda")

现在我想将该模型加载到一个对象并将其用于另一个预测

mymodel<- load("/home/Dav/x_glm.rda)

predict(mymodel, newdata = data2, type = "response")

不工作!

但是如果我加载它而不将它传递给一个对象,那么

predict(x_glm, newdata = data2, type ="response")作品。

如何将模型传递给对象并对该对象调用预测?

标签: robjectloadpredict

解决方案


load并且save用于将多个对象保存在一个文件中。load从保存的环境中加载所有对象,并且无法分配结果。相反,您最终会加载已保存的相同名称。

对于单一的对象saveRDSreadRDS更合适。它们不保留保存的对象的原始名称,并且readRDS可以并且应该分配来自的输出。好的做法是在.rds此处使用文件扩展名。

saveRDS(x_glm, "x_glm.rds")
mymodel = readRDS("x_glm.rds")

如果您需要更安全地load将环境保存在rda文件中,您可以创建一个新环境,加载到该环境中,然后一次将一个对象拉出到您当前的环境中,如下所示:

my_env = new.env()
load("x_glm.rda", envir = my_env)
ls(envir = my_env) # find the name of the object you want
my_object = my_env$name_of_loaded_object

进入当前环境的风险load是,与正在编辑的对象同名的任何对象都load将被覆盖。


推荐阅读