[英]An error while trying to use glm model for prediction on another computer
我想在一台R机器中保存一个glm对象并用它来预测位于另一台有更新数据的机器上的另一台数据集。我尝试使用save
和load
但没有成功。我做错了什么? 这是一个玩具示例:
# on machine 1:
glm<-glm(y~x1+x2,data=dat1, family=binomial(link="logit")
save(glm,file="glm.Rdata") # the file is stored in a folder.
# on machine 2:
load(glm.RData) # got an error:"Error in load(glm.RData) : object 'glm.RData' not found"
#I tried :
load(file='glm.RData') # no error was displayed
print(glm) # got an error:"Error in load(glm.RData) : object 'glm.RData' not found"
任何帮助都会很棒。
根据@ user3710546的建议,我会避免使用名称glm
来保存你的模型,因为它会掩盖(即阻塞) glm()
函数,这使你很难在你的会话中使用它。
save()
和load()
save()
通常用于将对象列表保存到文件,而不是单个对象。 save()
的第一个参数是list
,'包含要保存的对象名称的字符向量'。 (强调我的。)所以你想要像这样使用它:
# On machine 1:
save(list = 'glm', file = '/path/to/glm.RData')
# On machine 2:
load(file = '/path/to/glm.RData')
请注意,文件扩展名通常区分大小写:您保存到扩展名为.RData
的文件,但是从扩展名为.Rdata
的文件加载,这是不同的。 这可以解释为什么找不到该文件。
saveRDS()
和readRDS()
使用save()
和load
的另一种方法是使用saveRDS()
和readRDS()
,它们被设计用于一个对象。 它们的使用方式略有不同:
# On machine 1
saveRDS(glm, file = '/path/to/glm.rds')
# On machine 2
glm = readRDS(file = '/path/to/glm.rds')
请注意.rds
文件扩展名以及readRDS()
不会自动放入环境中的事实(需要将其分配给某些内容)。
如果你只想保存公式 - 即实际的文本字符串 - 你可以在glm$formula
找到它,其中glm
是你的对象的名字。 它作为formula
对象返回,但您可以将其转换为带有as.character(glm$formula)
的字符串,然后将其写入文本文件或其他任何内容。
但是,如果您希望模型本身没有创建数据集(以减少磁盘空间),请查看本文 , 该文章讨论了可以安全删除glm
对象的哪些部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.