最近频频遇到一些内存不足的情况,所以把所有中间变量都保存下来了
原始的数据就是一个对象(rows:200W; cols:10+);中间变量都是基于它处理得到的data.frame。
<br />
> .ls.objects(n=20)<br />
Type Size Rows Columns<br />
webmo.all data.frame 297.5639 66792 17<br />
webmo_all data.frame 297.5639 66792 17<br />
web.all data.frame 297.0509 66792 16<br />
webmo data.frame 296.2277 66792 14<br />
webx data.frame 296.1399 48604 18<br />
webme.all data.frame 295.7305 48604 17<br />
webme_all data.frame 295.7305 48604 17<br />
webme data.frame 294.7581 48604 14<br />
obj data.frame 291.2721 3185 19<br />
webmo.ds10 data.frame 291.2155 2742 19<br />
webmo.de10 data.frame 291.1686 2502 19<br />
web.ds10 data.frame 291.1321 2316 19<br />
web.de10 data.frame 291.0983 2123 19<br />
webme.ds10 data.frame 291.0758 2021 19<br />
webme.de10 data.frame 291.0741 1995 19<br />
te data.frame 290.7320 649 14<br />
web2 data.frame 290.7154 444 14<br />
web.2 data.frame 290.6783 11 18<br />
web.1 data.frame 290.6783 12 18<br />
t.p data.frame 290.6782 31 14</p>
<p>> dim(t.p)<br />
[1] 31 14<br />
> object.size(t.p)<br />
290678192 bytes<br />
> t.p<- as.matrix(t.p)<br />
> object.size(t.p)<br />
11400 bytes<br />
> t.p<- as.data.frame(t.p)<br />
> object.size(t.p)<br />
42720 bytes<br />
中间变量t.p当中有些字段是因子变量,levels还是原始的几万甚至几十万的水平数。除了rm掉无用的中间变量,还有什么简单的办法让它如上面一样瘦身吗?
</p>