我正在尝试在 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, ...)
尽管对象本身的大小相同,但这会导致大约 20 MB 的更大的 RData 文件。
所以我理解这是一个环境问题,但我很难准确地指出它是如何发生的以及为什么会发生。生成的文件大小似乎变化很大。我曾尝试使用 saveRDS,同样我也尝试通过 <<- 分配 glmObject 以使其成为全局对象,但似乎没有任何帮助。
我对 R 环境的理解显然不是很好,如果有人能提出解决这个问题的方法,我将不胜感激。谢谢。