Ani, Here are some alternatives approaches.
# your data m1<-matrix(c(1,1,1,2,2,2,3,3,3),ncol=3,byrow=TRUE) m2<-matrix(c(1,2,1,1,2,3,2,3,3),ncol=3,byrow=TRUE) r1<-raster(m1) r2<-raster(m2) # I think this is the most elegant approach for mutli-layer reclassification problem. # caveat: it may be slow. Also note that all other combinations become NA (not zero) # but perhaps it is better that way d <- data.frame(matrix(c(1,1,1,1,2,2), ncol=3, byrow=TRUE)) s <- subs( stack(r1, r2), d, by=1:2, which=3) # and then there is overlay and calc. They do the same as what Etienne showed, but these will be faster for large files # and memory safe and you could add a filename= argument. # here is use 0 for a background value, but you could replace that with NA b <- overlay(r1, r2, fun=function(x,y) {z=x; z[]=0; z[x==1&y==1]=1; z[x==1&y==2]=2; z} ) e <- calc(stack(r1, r2), fun=function(x) {z=x[,1]; z[] = 0; z[x[,1]==1&x[,2]==1]=1; z[x[,1]==1&x[,2]==2]=2; z} ) Robert On Thu, Oct 18, 2012 at 6:06 AM, aniruddha ghosh <aniru...@gmail.com> wrote: > Thank you Etienne and Steven for your suggestions. > > I tried the ordinary matrix method as suggested by Etienne. It works > fine. It was fast and produced excellent results for my original > raster files with 10 values. > > Steven, when I try to incorporate more number of cell values, the > procedure is getting longer as I have to reclassify multiple times for > different combinations. > > Best regards, > > > On Thu, Oct 18, 2012 at 1:50 AM, steven mosher <mosherste...@gmail.com> > wrote: > > > > reclassify r1 to 1 and 0. reclassify r2 to 0 1 and 2. > > then multiply the rasters. > > so r1 becomes 0 for all values ecept 1. r2 is 1 or 2 or 0. and the > product r3 will be 1 or 2 or 0 > > > > On Oct 17, 2012 11:55 AM, "aniruddha ghosh" <aniru...@gmail.com> wrote: > >> > >> Dear List, > >> I have two raster layers (r1 and r2) and the cells have values ranging > 1 to > >> 10. I want to create a new raster layer from these two with different > >> conditions like: > >> 1) if r1==1 and r2==1, then r3 should be 1 > >> 2) if r1==1 and r2==2, then r3 should be 2 > >> else 0 etc > >> > >> With the following example: > >> > >> m1<-matrix(c(1,1,1,2,2,2,3,3,3),ncol=3,byrow=TRUE) > >> m2<-matrix(c(1,2,1,1,2,3,2,3,3),ncol=3,byrow=TRUE) > >> r1<-raster(m1) > >> r2<-raster(m2) > >> Here, r1[1,1]=1 and r2[1,1]=1, so for the new raster, [1,1] should be 1, > >> r1[1,2]=1 and r2[1,2]=2, so for the new raster, [1,2] should be 2, > >> all other cells which don't satisfy the above criteria should be zero. > >> > >> I tried with "calc" in raster package but the attempt was not > successful. > >> > >> Looking forward to your suggestions! > >> > >> > >> Thanks > >> -- > >> Ani > >> > >> [[alternative HTML version deleted]] > >> > >> _______________________________________________ > >> R-sig-Geo mailing list > >> R-sig-Geo@r-project.org > >> https://stat.ethz.ch/mailman/listinfo/r-sig-geo > > > > > -- > Ani > > _______________________________________________ > R-sig-Geo mailing list > R-sig-Geo@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-sig-geo > [[alternative HTML version deleted]] _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo