[R-sig-Geo] raster:::stack(), missing value where TRUE/FALSE needed

Howard, Tim G (DEC) tim.howard at dec.ny.gov
Fri Aug 26 19:19:13 CEST 2016


I'm kind of at a loss as to why 

"Error in if (common.len == 1L) unlist(x, recursive = FALSE) else if (common.len :
missing value where TRUE/FALSE needed"

means "your system can't handle such big files" but switching to a computer with Windows 64-bit and 32GB RAM seems to solve the problem. 

I'm all set now. 
Tim

> Date: Thu, 25 Aug 2016 20:44:02 +0000
> From: "Howard, Tim G (DEC)" <tim.howard at dec.ny.gov>
> To: "r-sig-geo at r-project.org" <r-sig-geo at r-project.org>
> Subject: [R-sig-Geo] raster:::stack(), missing value where TRUE/FALSE
>         needed
> Message-ID:
> 
> <SN1PR09MB1071ED446CD060D0272BD11FA8ED0 at SN1PR09MB1071.namprd
> 09.prod.outlook.com>
> 
> Content-Type: text/plain; charset="us-ascii"
> 
> All,
> I'm stymied by this, I expect there is a simple solution. I am trying to
> stack/brick some very large rasters (26 GB in native R [.gri] format!). But the
> error does not imply there's a problem with the raster size.  AND, my stack
> calls work with a crop() of the rasters, as follows :
> 
> ### first try, has always worked in the past
> 
> > library(raster)
> > pathToRas <- "G:/test/nativeR"
> > pathToBrick <- "G:/test/brick"
> > raslist <- list.files(path = pathToRas, pattern = ".grd$")
> > gridlist<-as.list(paste(pathToRas,raslist,sep = "/")) nm <-
> > substr(raslist,1,nchar(raslist) - 4) names(gridlist)<-nm gridlist
> $canopy_1cell
> [1] "G:/test/nativeR/canopy_1cell.grd"
> 
> $shrubscrub_10
> [1] "G:/test/nativeR/shrubscrub_10.grd"
> 
> > envBrick <- brick(stack(gridlist),filename =
> > paste(pathToBrick,"/brick.grd",sep = ""))
> Error in if (common.len == 1L) unlist(x, recursive = FALSE) else if (common.len
> >  :
>   missing value where TRUE/FALSE needed
> 
> 
> ##### second attempt, load as rasters first
> 
> > r1 <- raster(gridlist[[1]])
> > r2 <- raster(gridlist[[2]])
> > s <- stack(r1, r2)
> Error in if (common.len == 1L) unlist(x, recursive = FALSE) else if (common.len
> >  :
>   missing value where TRUE/FALSE needed
> 
> 
> #### third attempt, crop them, write them, then use exactly the same call to
> create the brick. Works!
> 
> > cropExtent <- extent(1950000, 2200000, 2815000, 3050000) r1crop <-
> > crop(r1, cropExtent) r2crop <- crop(r2, cropExtent)
> > writeRaster(r1crop, filename = paste(pathToBrick,"/r1crop", sep=""),
> > format = "raster") writeRaster(r2crop, filename =
> > paste(pathToBrick,"/r2crop", sep=""), format = "raster") cropgridlist
> > <- as.list(c(paste(pathToBrick,"r1crop", sep="/"),
> > paste(pathToBrick,"r2crop", sep="/")))
> > names(cropgridlist) <- c("r1crop","r2crop") envBrick <-
> > brick(stack(cropgridlist),filename =
> > paste(pathToBrick,"cropBrick.grd",sep = "/"))
> >
> > envBrick
> class       : RasterBrick
> dimensions  : 6766, 8333, 56381078, 2  (nrow, ncol, ncell, nlayers) resolution  :
> 30, 30  (x, y)
> extent      : 1950015, 2200005, 2815005, 3017985  (xmin, xmax, ymin, ymax)
> coord. ref. : +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0
> +y_0=0 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0
> data source : G:\test \brick\cropBrick.grd
> names       :   r1crop,   r2crop
> min values  :        0,        0
> max values  : 92.55556,  1.00000
> 
> >
> #### here's the traceback() if that is useful
> 10: simplify2array(answer, higher = (simplify == "array"))
> 9: sapply(1:nl, function(i) {
>        r <- x at layers[[i]]
>        r at data@names <- value[i]
>        r
>    })
> 8: `names<-`(`*tmp*`, value = c("Canopy_1cell", "Shrubscrub_10"))
> 7: `names<-`(`*tmp*`, value = c("Canopy_1cell", "Shrubscrub_10"))
> 6: .local(x, ...)
> 5: stack(.makeRasterList(rlist))
> 4: stack(.makeRasterList(rlist))
> 3: .local(x, ...)
> 2: stack(r1, r2)
> 1: stack(r1, r2)
> 
> 
> > sessionInfo()
> R version 3.3.1 (2016-06-21)
> Platform: i386-w64-mingw32/i386 (32-bit) Running under: Windows 7 (build
> 7601) Service Pack 1
> 
> locale:
> [1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United
> States.1252 [3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
> [5] LC_TIME=English_United States.1252
> 
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
> 
> other attached packages:
> [1] raster_2.5-8 sp_1.2-1
> 
> loaded via a namespace (and not attached):
> [1] rgdal_1.1-3     parallel_3.3.1  tools_3.3.1     Rcpp_0.12.3     grid_3.3.1
> lattice_0.20-33
> 
> Thanks in advance for any pointers.
> Tim
> 



More information about the R-sig-Geo mailing list