作者AndrewShi (没有你的我)
看板R_Language
标题[问题] 读取多年维度为矩阵的变数值(nc档)
时间Thu Nov 22 18:43:24 2018
[问题类型]:
程式谘询(我想用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://webptt.com/cn.aspx?n=bbs/R_Language/M.1542883407.A.8AA.html
※ 编辑: AndrewShi (180.217.134.75), 11/22/2018 21:34:14
1F:→ andrew43: 47年的资料吗?雨量以双精倍浮点数估算就要13GB记忆体 11/22 21:57
2F:→ AndrewShi: 对,或许之後不一定会用到这麽长时间,但20~30年跑不 11/22 22:47
3F:→ AndrewShi: 掉。 11/22 22:47
4F:→ andrew43: memory.limit() 结果多少? 11/23 01:05
5F:→ andrew43: 够的话,看一下 ?memory.limit 来推敲 11/23 01:08
6F:→ AndrewShi: 4010,这是指我的记忆体空间极限是4010Mb吗?! 11/23 01:51
7F:→ andrew43: 对啊。找台16GB以上ram的电脑做吧 11/23 01:52
8F:→ andrew43: 4GB ram进OS後所剩不多吧,这个做不来 11/23 01:55
9F:→ AndrewShi: 了解,所以只有换电脑记忆体的选择一途罗?!我是有想到 11/23 02:54
10F:→ AndrewShi: 可以把nc档先转成txt档再转成csv档,这样不知道会不会 11/23 02:54
11F:→ AndrewShi: 比较不占记忆体的空间?! 11/23 02:54
12F:→ andrew43: 读到R中是浮点数(的话),都一样,和先前资料储存格式 11/23 07:24
13F:→ andrew43: 无关。 11/23 07:24
14F:→ andrew43: 资料读入後的操作还可能需要资料量2倍的记忆体。总之你 11/23 07:27
15F:→ andrew43: 的硬体远远不够。 11/23 07:27
16F:→ AndrewShi: 了解,谢谢andrew大的解答。 11/23 12:16