作者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://www.ptt.cc/bbs/R_Language/M.1464767586.A.407.html
→ celestialgod: 那麼大的資料量還是直接用資料庫省事 06/01 16:18
→ cywhale: 記得看過用sqldf把檔案當暫時資料庫可以避掉記憶體不足 06/01 16:35
→ jklkj: html 這個網站有看到作者用樓上說的sqldf,而且row數量也相 06/01 17:15
→ jklkj: 當多(應該夠我用一陣子了),想問一下這SQLDF是要怎麼當暫時 06/01 17:16
→ jklkj: 資料庫,感謝 06/01 17:16
→ cywhale: 我自己沒用過,我也是跟一樓C大說的,直接用資料庫.. 06/01 17:24
→ cywhale: 如果資料都是同一種(如數值)或可以轉換,也可以用 06/01 17:25
→ cywhale: bigmemory in R.. 06/01 17:26
→ jklkj: 不好意思,我沒用過bigmmory或ff,這兩個套件執行速度會很 06/04 10:23
→ jklkj: 慢嗎?我是指跟沒用比的話 06/04 10:23
→ jklkj: 然後我用了sqldf的方法結果資料跑不出來,即便是完全copy 06/04 10:24
→ celestialgod: ff或bigmemory都用硬碟讀取,速度看硬碟讀取速度 06/04 11:15
→ celestialgod: 用硬碟讀取,除非用SSD,不然應該快不起來 06/04 11:15
→ celestialgod: 畢竟記憶體速度太快 06/04 11:15
推 cywhale: 是因原po說記憶體不夠才推此法,但其實R外cat應該最好.. 06/04 14:27