小编mod*_*erX的帖子

在R中的函数中保存单个对象:RData文件的大小非常大

我正在尝试将精简的GLM对象保存在R中(即,将所有“非必需”特征都设置为NULL,例如,残差,prior.weights,qr $ qr)。

例如,查看我需要使用的最小对象:

print(object.size(glmObject))
168992 bytes
save(glmObject, "FileName.RData")
Run Code Online (Sandbox Code Playgroud)

在全局环境中分配此对象并保存将导致大约6KB的RData文件。

但是,我实际上需要在函数内创建并保存glm对象,而函数本身就是函数内的对象。因此,代码如下所示:

subFn <- function(DT, otherArg, ...){
                 glmObject <- glm(...)
                 save(glmObject,"FileName.RData")
}

mainFn <- function(DT, ...){ 
             subFn(DT, otherArg, ...)
}

mainFn(DT, ...)
Run Code Online (Sandbox Code Playgroud)

尽管对象本身具有相同的大小,但是这会导致大约20 MB的RData文件大得多。

因此,我知道这是一个环境问题,但我一直在努力确切查明它的发生方式和原因。生成的文件大小似乎相差很大。我试过使用saveRDS,同样,我试过通过<<-分配glmObject使其成为全局对象,但似乎无济于事。

我对R中的环境的理解显然不是很好,并且如果有人可以提出解决办法,我将不胜感激。谢谢。

environment r save glm rdata

3
推荐指数
2
解决办法
970
查看次数

标签 统计

environment ×1

glm ×1

r ×1

rdata ×1

save ×1