PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
R_Language
Re: [问题] 内存不足
楼主:
jklkj
(诚实可靠小郎君)
2016-06-04 10:35:50
因为要打得太多了我想说还是再问一篇好了
我试过http://goo.gl/soE8XA这篇的方法
可是出现错误讯息如下
Loading required package: tcltk
Error in .local(conn, name, value, ...) :
RS_sqlite_import: data1.dat line 2 expected 2 columns of data but found 3
然后我google了这个错误
https://groups.google.com/forum/#!topic/sqldf/1VWgp9WJLr4
这篇有讲到14年11月已经修改这个问题了
所以我不知道这样是发生什么事了
我还蛮想学会这招的
然后我还想问有关bigmemory跟ff跑起来的速度会比较慢吗
谢谢
※ 引述《jklkj (诚实可靠小郎君)》之铭言:
: 标题: [问题] 内存不足
: 时间: 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)
作者:
cywhale
(cywhale)
2016-06-04 14:15:00
你想看的几个解法
https://goo.gl/Q3L6mY
pdf p3开始都有sqldf csv要靠 library(RH2) csvread in github Q10
https://goo.gl/b8wWBc
基本上不管sqldf, bigmemory..都不快,如果新资料格式都相同,又有内存不够问题,何不利用系统指令在R外就合并
楼主:
jklkj
(诚实可靠小郎君)
2016-06-04 14:47:00
不好意思我不太了解要怎么用系统指令在R外合并,而且我好奇的是既然我没办法rbind这些资料说是内存不足无法写超过nrow的资料,那么我在外面合并不是一样也读不进来吗?其实我之前是一次读全部几千万笔的资料,可是每次进来都只有900多万笔(两次笔数相同),所以我才以为是不是R在读单次的资料列时有限制,我才回分开来读
作者:
cywhale
(cywhale)
2016-06-04 15:00:00
看你目的,如果读进来只是为了合并,而不做其他运算,那不如在R外做如cat 1.csv 2.csv > new.csv (linux)如要把超过内存的资料读进来做其他运算,bigmemory这类放硬盘的方式有帮助,但bigmemory资料格式必须一致有限制如资料会sample or subset后再运算,那数据库筛完再进R如果读进来少资料,不是内存问题,有可能资料格式不整另外几百万笔,应该fread吃得下来,不妨试试看
楼主:
jklkj
(诚实可靠小郎君)
2016-06-04 15:26:00
所以cat是linux的语法而fread是C++的语法,可是我刚好都没在使用,我在自己研究一下,非常感谢帮助,之后我应该也会开始接触相关的程式语言,感谢
作者:
Wush978
(拒看低质媒体)
2016-06-04 15:32:00
先检查一下妳的资料在9百万多的列有没有格式错误
作者:
cywhale
(cywhale)
2016-06-04 15:32:00
No 抱歉造成误会 是library(data.table)中的fread
作者:
Wush978
(拒看低质媒体)
2016-06-04 15:33:00
都测测看read.table与read.csv两者在资料出错时的反应不太一样大资料不要用rbind 尽量一次做完rbind会花费额外的内存做资料的复制
楼主:
jklkj
(诚实可靠小郎君)
2016-06-04 16:14:00
照理来说如果资料错误的话,不管是900万笔或者是之后rbind的2000万笔应该都会有相同的问题不是吗?我的意思是假设我一开始全捞只有出现9,251,310笔,那么我之后by年做rbind不是也会在第9,251,310出现错误吗?cywhale抱歉我没有写清楚,我目前是只有捞到2000多万笔,之后可能每年会以千万笔的资料量增加,所以我不确定fread吃不吃得下,还是感谢你,顺便请问一个问题,所以csv档在linux下没有row的限制吗?感谢
作者:
Wush978
(拒看低质媒体)
2016-06-04 18:35:00
没有
楼主:
jklkj
(诚实可靠小郎君)
2016-06-13 15:43:00
回报一下进度,刚装了32G2的内存,顺利地跑完了2000多万笔,看来之前一次只能抓900多万应该是因为内存无误,只是不知道抓取的笔数跟内存的限制在哪,不然之后就算跑完也不敢确定跑完的是真的全部资料???
继续阅读
[问题] shiny的tooltip在筛选之后会定位错误
sky800507
[问题] contingency table
locka
Re: [问题] data.frame&data.table之间的问题
huangsam
Re: [问题] data.frame&data.table之间的问题
celestialgod
[心得] RGoogleAnalytics
jklkj
[问题] 内存不足
jklkj
[问题] data.frame&data.table之间的问题
huangsam
[问题] Rstudio
jimmm
[问题] nloptr gradient 疑问
s1001326
[问题] list问题
gbd37
Links
booklink
Contact Us: admin [ a t ] ucptt.com