[R-sig-Geo] Bioclimatic variables - wettest quarter
Brian Oney
zenlines at gmail.com
Tue Nov 9 02:29:17 CET 2010
Hello Robert,
Thank you for the suggestions.
The first one:
mon_stac <- stack(paste(pc_clim,"1975_prec",1:12,".asc", sep=""))
plot(mon_stac * 10) # gives me twelve plots of horrendous amounts of rain
maxmonth <- function(a,b,d,e,f,g,i,j,k,l,m,n){
+ o <- a + b + d
+ p <- b + d + e
+ r <- d + e + f
+ u <- e + f + g
+ v <- f + g + i
+ w <- g + i + j
+ x <- i + j + k
+ y <- j + k + l
+ z <- k + l + m
+ aa <- l + m + n
+ ab <- m + n + a
+ ac <- n + a + b
+ #ad <- which.max(c(o,p,r,u,v,w,x,y,z,aa,ab,ac))
+ ad <- calc(stack(o,p,r,u,v,w,x,y,z,aa,ab,ac), fun=
which.max)
+ return(ad)}
>
> avg <- overlay(mon_stac, fun=maxmonth)
Error in rep.int(names(x), lapply(x, length)) :
no function to return from, jumping to top level
Error in .overlayList(rasters, fun = fun, filename = filename, ...) :
cannot use this formula
When I use uncomment the which.max attempt above, I still get the same
"Error in .overlayList(rasters, fun = fun, filename = filename, ...) :
cannot use this formula; lenghts do not match" error.
In trying it manually, with map algebra:
a <- raster(paste(pc_clim,"1975_prec",1,".asc", sep=""))
b <- raster(paste(pc_clim,"1975_prec",2,".asc", sep=""))
d <- raster(paste(pc_clim,"1975_prec",3,".asc", sep=""))
e <- raster(paste(pc_clim,"1975_prec",4,".asc", sep=""))
f <- raster(paste(pc_clim,"1975_prec",5,".asc", sep=""))
g <- raster(paste(pc_clim,"1975_prec",6,".asc", sep=""))
i <- raster(paste(pc_clim,"1975_prec",7,".asc", sep=""))
j <- raster(paste(pc_clim,"1975_prec",8,".asc", sep=""))
k <- raster(paste(pc_clim,"1975_prec",9,".asc", sep=""))
l <- raster(paste(pc_clim,"1975_prec",10,".asc", sep=""))
m <- raster(paste(pc_clim,"1975_prec",11,".asc", sep=""))
n <- raster(paste(pc_clim,"1975_prec",12,".asc", sep=""))
o <- a + b + d
p <- b + d + e
r <- d + e + f
u <- e + f + g
v <- f + g + i
w <- g + i + j
x <- i + j + k
y <- j + k + l
z <- k + l + m
# Try it this this to see if the double character object name are the
problem.
A <- l + m + n
B <- m + n + a
E <- n + a + b
# I get the following:
ad <- calc(stack(o,p,r,u,v,w,x,y,z,A,B,E), fun= which.max)
#Error in .local(x, values) : values must be numeric, integer or logical.
# Try stacking it:
G <- stack(o,p,r,u,v,w,x,y,z,A,B,E)
ad <- calc(G, fun=which.max)
#Error in .local(x, values) : values must be numeric, integer or logical.
Jacob made some suggestions that also produced a similar error.
Just in case:
> sessionInfo()
R version 2.11.0 (2010-04-22)
i386-pc-mingw32
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United
States.1252 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] rgdal_0.6-27 dismo_0.5-6 rJava_0.8-7 raster_1.6-10
maps_2.1-3 gpclib_1.5-1 maptools_0.7-34 lattice_0.18-5
sp_0.9-64 foreign_0.8-40
loaded via a namespace (and not attached):
[1] grid_2.11.0 tools_2.11.0
My extent is western North America from Canada to Mexico with a huge
amount of NA cells over the ocean, if this helps.
Thank you for the help.
Cheers,
Brian
More information about the R-sig-Geo
mailing list