看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 各位大大好,小弟我想要將多年(10年以上)的區域(東亞)降雨資料讀進R,並取出多年的 降雨值來做計算處理,而目前資料可以讀的進R,但在取降雨這個變數的時候,R就跑出 記憶體不足的錯誤訊息,降雨值的資料為一矩陣(經度x緯度),經度總共360格,緯度共 280格(360*280),每一格皆有一降雨值,一天一個矩陣(平面),所以我在想有沒有可能 真的是要取出來的降雨這個變數資料量太佔記憶體,而造成沒辦法取出這麼多年分的降 雨值出來,小弟我目前試我的電腦最多只能取出4年的降雨值出來,所以想請教各位大大 有沒有什麼方法可以解決嗎??謝謝。 資料可從這裡取得:http://0rz.tw/JI056 (APHRO這個檔案) [程式範例]: rm(list=ls()) library(ncdf4) Aphrodite_data <- "C:\\Users\\TOM\\Desktop\\R(資料庫)\\Aphrodite資料 \\APHRO_MA_025deg_V1101R2.1961-2007\\APHRO_MA_025deg_V1101R2.1961-2007.nc" obs <- nc_open(Aphrodite_data) print(obs) lon <- ncvar_get(obs,"lon") lat <- ncvar_get(obs,"lat") level <- ncvar_get(obs,"lev") time <- ncvar_get(obs,"time") tunits <- ncatt_get(obs, "time", "units") precip <- ncvar_get(obs, "pr") precip <- ncvar_get(obs, "pr",start=c(1,1,1,1),count=c(360,280,1,1460)) dim(precip) nc_close(obs) [環境敘述]: https://imgur.com/kJiIoc7 [關鍵字]: 多年資料 變數 nc檔 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.227.126 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1542883407.A.8AA.html ※ 編輯: AndrewShi (180.217.134.75), 11/22/2018 21:34:14
andrew43: 47年的資料嗎?雨量以雙精倍浮點數估算就要13GB記憶體 11/22 21:57
AndrewShi: 對,或許之後不一定會用到這麼長時間,但20~30年跑不 11/22 22:47
AndrewShi: 掉。 11/22 22:47
andrew43: memory.limit() 結果多少? 11/23 01:05
andrew43: 夠的話,看一下 ?memory.limit 來推敲 11/23 01:08
AndrewShi: 4010,這是指我的記憶體空間極限是4010Mb嗎?! 11/23 01:51
andrew43: 對啊。找台16GB以上ram的電腦做吧 11/23 01:52
andrew43: 4GB ram進OS後所剩不多吧,這個做不來 11/23 01:55
AndrewShi: 了解,所以只有換電腦記憶體的選擇一途囉?!我是有想到 11/23 02:54
AndrewShi: 可以把nc檔先轉成txt檔再轉成csv檔,這樣不知道會不會 11/23 02:54
AndrewShi: 比較不占記憶體的空間?! 11/23 02:54
andrew43: 讀到R中是浮點數(的話),都一樣,和先前資料儲存格式 11/23 07:24
andrew43: 無關。 11/23 07:24
andrew43: 資料讀入後的操作還可能需要資料量2倍的記憶體。總之你 11/23 07:27
andrew43: 的硬體遠遠不夠。 11/23 07:27
AndrewShi: 了解,謝謝andrew大的解答。 11/23 12:16