[问题] 内存不足

楼主: jklkj (诚实可靠小郎君)   2016-06-01 15:53:04
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
效能咨询(我想让R 跑更快)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
目前我要把大概几千万笔的资料(目前只跑到2000多万笔)放进R去,
应该会有两三个dataframe,每个dataframe都有数千万笔
打算把R当作数据库,不管是join或是一些资料的整理
我把资料一直rbind下去,超过两千多万笔之后就会出现内存不足的问题
想请问这样的问题除了直接加内存以外(因为是公司的电脑)
有别的方法吗?
[程式范例]:
程式范例就是很简单的
sale <- rbind(sale1, sale)
错误讯息如下
error: cannot allocate vector of size 256.0 mb
我有找到一些解决的方法是加ram(其实我也很想加到32G)、用64bit(感觉我已经在用了)
想请问一下有别的解决方法吗?
[环境叙述]:
R version 3.3.0 (2016-05-03)
作者: celestialgod (天)   2016-06-01 16:18:00
那么大的资料量还是直接用数据库省事
作者: cywhale (cywhale)   2016-06-01 16:35:00
记得看过用sqldf把档案当暂时数据库可以避掉内存不足
楼主: jklkj (诚实可靠小郎君)   2016-06-01 17:13:00
http://bryannotes.blogspot.tw/2014/07/r-sqldf-vs-lappy.html 这个网站有看到作者用楼上说的sqldf,而且row数量也相当多(应该够我用一阵子了),想问一下这SQLDF是要怎么当暂时数据库,感谢
作者: cywhale (cywhale)   2016-06-01 17:23:00
我刚google一下 这篇 http://goo.gl/soE8XA我自己没用过,我也是跟一楼C大说的,直接用数据库..如果资料都是同一种(如数值)或可以转换,也可以用bigmemory in R..
楼主: jklkj (诚实可靠小郎君)   2016-06-04 10:23:00
不好意思,我没用过bigmmory或ff,这两个套件执行速度会很慢吗?我是指跟没用比的话然后我用了sqldf的方法结果资料跑不出来,即便是完全copy
作者: celestialgod (天)   2016-06-04 11:15:00
ff或bigmemory都用硬盘读取,速度看硬盘读取速度用硬盘读取,除非用SSD,不然应该快不起来毕竟内存速度太快
作者: cywhale (cywhale)   2016-06-04 14:27:00
是因原po说内存不够才推此法,但其实R外cat应该最好..

Links booklink

Contact Us: admin [ a t ] ucptt.com