[R-sig-Geo] memory - cannot allocate vector of size 'x'
Roger Bivand
Roger.Bivand at nhh.no
Tue Mar 4 09:48:56 CET 2008
On Mon, 3 Mar 2008, Jose Funes wrote:
> Dear members,
>
> I would like to share some of the problems that I have run into R when
> importing ascii files. I described the problem below, if any have
> experienced similar issues I will appreciate you support.
>
> I am working with raster data(maps) and importing it as ascii files to
> R. I am stacking 9 layers (10MB~each, total 90MB). However, when
> stacking the eight layer I get the following message "Error: cannot
> allocate vector of size 10.8 Mb". I did a little of bit of reading
> about this, and some suggestions are to increase the memory
> allocation. I increased it to 3GB using the following command:
> memory.limit(size=3000) but the problem still persist.
>
Which platform? Windows? Its performance is systematically worse than
other OS on the same hardware. When you say 10Mb, is this 8 bytes *
roughly 1.2 million cells? Are you running gc() between calls to
readAsciiGrid() to force garbage collection? While readAsciiGrid() is
working, I think that at least three copies of the data are in memory.
Have you tried using rgdal? Maybe readGDAL() keeps fewer internal copies?
(in readGDAL, that may be at least two copies, but I'm not sure (NAs are
handled by GDAL)). Because input needs to be converted from representation
to representation, it is not possible to avoid multiple copies.
> code:
> 1. predictorslide2 <- readAsciiGrid("sol_spr_lide2.asc")
> ...
> ...
> 8. predictorslide2 <- cbind(predictorslide2,readAsciiGrid("umca_pr_lide2.asc"))
>
It may be possible to get round cbind() copying if that turns out to be
the problem, by taking the SpatialGrid from the first read, putting it
aside, and storing the single columns of the data slots of read data in a
single, pre-allocated data frame. Re-allocating to predictorslide2
successively is not a good idea for large objects - Braun & Murdoch in
their nice book on R programming treat it as a worst case on speed and
memory usage.
> Also I got a similar error when running regression kriging:
> Error: cannot allocate vector of size 6.7 Mb
Without the command, this isn't informative. Were you using local areas
(maximum distance or # data points)? How large were the data= and newdata=
objects?
Roger
> In addition: There were 12 warnings (use warnings() to see them)
>
> warning messages:
> 1: Reached total allocation of 1535Mb: see help(memory.size)
> ...
> 3: In slot(value, what) <- slot(from, what) :
> ...
> 8: In slot(value, what) <- slot(from, what) :
> Reached total allocation of 1535Mb: see help(memory.size)
> ...
> 12: In `slot<-`(`*tmp*`, what, value = structure(c(-293438.89990765, ... :
> Reached total allocation of 1535Mb: see help(memory.size)
>
> I will appreciate your suggestions. I have also considered splitting
> the data but would like to explore other solutions.
>
> Regards,
>
> Jose Funes
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no
More information about the R-sig-Geo
mailing list