[问题] Error:can't allocate vector of size Gb

楼主: AndrewShi (没有妳的我)   2018-11-02 18:08:53
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
之前一开始用image画图出来之后,加上levelplot()那段指令都能画的出colorbar,但画
了几次之后,执行levelplot()那段指令都会出现下图中的错误讯息,且colorbar也没跑
出来。
我上了stackoverflow查到好像有人说这是内存空间的问题,而我也试了在levelplot指
令前加上gc(),且从工作管理员也看到内存用量降到40%左右,但执行levelplot()之后
还是出现同样的错误讯息,且在两台电脑试都一样,而我装了ff套件之后试也还是一样,
所以想请教各位大大这是什么问题以及可以解决吗(除了换电脑内存的容量)??
小弟的电脑内存容量(RAM)为4GB。
[程式范例]:
rm(list=ls())
library(ncdf4)
library(data.table)
TRMM_data <- "C:\\Users\\TOM\\Desktop\\R(数据库)\\TRMM资料\\trmm_2010.nc"
obs <- nc_open(TRMM_data)
lon <- ncvar_get(obs,"lon")
lat <- ncvar_get(obs,"lat")
time <- ncvar_get(obs,"time")
precip <- ncvar_get(obs,"r")
time <- matrix(seq(as.Date("2010-01-01"), as.Date("2010-12-31"),1))
precip1 <- matrix(NA_real_,1440,400)
for(i in c(1:1440)){
for(j in c(1:400)){
precip1[i,j] <- mean(precip[i,j,time=(1:31)])
}
}
library(RColorBrewer)
image(lon,lat,precip1,col=rev(brewer.pal(10,"RdBu")))
gc()
library(lattice)
grid <- expand.grid(lon=lon, lat=lat)
cutpts <- c(0,5,10,15,20,25,30,35,40,45,50)
levelplot(precip ~ lon * lat, data=grid, at=cutpts, cuts=11, pretty=T,
col.regions=(rev(brewer.pal(10,"RdBu"))))
library(sp)
library(maps)
map(database='world2',add= TRUE)
[环境叙述]:
https://imgur.com/qdHINqH
[关键字]:
内存空间
作者: andrew43 (讨厌有好心推文后删文者)   2018-11-02 19:08:00
先确定是对precip还是precip1画图吧
楼主: AndrewShi (没有妳的我)   2018-11-03 00:08:00
precip1,andrew大,这篇是你在问我之前写的XD
作者: andrew43 (讨厌有好心推文后删文者)   2018-11-03 01:17:00
所以画图时你用错物件了。
楼主: AndrewShi (没有妳的我)   2018-11-03 01:32:00
我知道了,precip要改成precip1,抱歉andrew大我又犯傻了XD不过andrew大~我之前在处理这种netcdf(nc)档的时候,像是读取降雨的变量,如果我的一个nc档案是10年(或以上)的降雨资料的话,在读取降雨这个变量时好像也会出现这个错误讯息耶,这样的话有解决办法吗??
作者: andrew43 (讨厌有好心推文后删文者)   2018-11-03 02:54:00
不确定也。可以发一篇新文问。
楼主: AndrewShi (没有妳的我)   2018-11-03 17:13:00
恩恩,我之后处理资料如果有碰到同样问题再发文问问看。

Links booklink

Contact Us: admin [ a t ] ucptt.com