【发布时间】:2016-03-11 23:21:25
【问题描述】:
我正在尝试在 R 中保存修剪过的 GLM 对象(即,将所有“非必要”特征设置为 NULL,例如残差、prior.weights、qr$qr)。
例如,查看我需要这样做的最小对象:
print(object.size(glmObject))
168992 bytes
save(glmObject, "FileName.RData")
在全局环境中分配这个对象并保存会导致一个大约 6KB 的 RData 文件。
但是,我实际上需要在函数中创建和保存 glm 对象,该对象本身就在函数中。所以代码看起来像:
subFn <- function(DT, otherArg, ...){
glmObject <- glm(...)
save(glmObject,"FileName.RData")
}
mainFn <- function(DT, ...){
subFn(DT, otherArg, ...)
}
mainFn(DT, ...)
这会导致 RData 文件大得多,大约 20 MB,尽管对象本身大小相同。
所以我理解这是一个环境问题,但我很难准确地确定它是如何发生的以及为什么会发生。生成的文件大小似乎变化很大。我尝试使用 saveRDS,同样我尝试通过
我对 R 环境的理解显然不是很好,如果有人能提出解决这个问题的方法,我将不胜感激。谢谢。
【问题讨论】:
-
您能否充实您的示例,包括虚假数据,以便您的问题可重现?
-
是的,您能否在函数内给出
object.size的输出? -
请参阅此处提出的解决方案(在 cmets 中进行代码校正)以获取绘图。它也应该适用于这种情况。 stackoverflow.com/questions/32192298/…
标签: r save environment glm rdata