作者jklkj (诚实可靠小郎君)
看板R_Language
标题[问题] 记忆体不足
时间Wed Jun 1 15:53:04 2016
[问题类型]:
程式谘询(我想用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) -- "Supposedly Educational"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)
[关键字]:
记忆体 不足
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 211.23.167.43
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1464767586.A.407.html
1F:→ celestialgod: 那麽大的资料量还是直接用资料库省事 06/01 16:18
2F:→ cywhale: 记得看过用sqldf把档案当暂时资料库可以避掉记忆体不足 06/01 16:35
4F:→ jklkj: html 这个网站有看到作者用楼上说的sqldf,而且row数量也相 06/01 17:15
5F:→ jklkj: 当多(应该够我用一阵子了),想问一下这SQLDF是要怎麽当暂时 06/01 17:16
6F:→ jklkj: 资料库,感谢 06/01 17:16
8F:→ cywhale: 我自己没用过,我也是跟一楼C大说的,直接用资料库.. 06/01 17:24
9F:→ cywhale: 如果资料都是同一种(如数值)或可以转换,也可以用 06/01 17:25
10F:→ cywhale: bigmemory in R.. 06/01 17:26
11F:→ jklkj: 不好意思,我没用过bigmmory或ff,这两个套件执行速度会很 06/04 10:23
12F:→ jklkj: 慢吗?我是指跟没用比的话 06/04 10:23
13F:→ jklkj: 然後我用了sqldf的方法结果资料跑不出来,即便是完全copy 06/04 10:24
14F:→ celestialgod: ff或bigmemory都用硬碟读取,速度看硬碟读取速度 06/04 11:15
15F:→ celestialgod: 用硬碟读取,除非用SSD,不然应该快不起来 06/04 11:15
16F:→ celestialgod: 毕竟记忆体速度太快 06/04 11:15
17F:推 cywhale: 是因原po说记忆体不够才推此法,但其实R外cat应该最好.. 06/04 14:27