You can also try this: f <- function(lai) { emiss_0 <- 0.95 + (0.01 * lai) emiss_nb <- 0.97 + (0.0033 * lai) i <- lai >= 1000 emiss_0[i] <- 0.95 emiss_nb[i] <- 0.98 cbind(emiss_0, emiss_nb) }
library(raster) rlai <- raster(ncols=360, nrows=180) rlai[] <- 1:ncell(rlai) x <- calc(rlai, f) x On Tue, Sep 15, 2015 at 8:47 PM, Andrew Vitale <vitale...@gmail.com> wrote: > I would do something like the following: > > library(raster) > > lai <- raster(ncols=50, nrows=50) > lai[] <- 1:ncell(lai) > > emmiss_0_func <- function(lai) { > emmiss_0 <- ifelse((lai < 1000), (0.95 + (0.01 * lai)), 0.95) > return(emmiss_0) > } > emmiss_nb_func <- function(lai) { > emmiss_nb <- ifelse((lai < 1000), (0.97 + (0.0033 * lai)), 0.98) > return(emmiss_nb) > } > > emiss <- stack(calc(lai, emmiss_0_func), calc(lai, emmiss_nb_func)) > plot(emiss) > > > On Tue, Sep 15, 2015 at 8:30 PM, Vijay Lulla <vijaylu...@gmail.com> wrote: > >> I have no idea what you're trying to accomplish with your program >> logic but I think the below might work for you. >> >> R> lai <- raster(ncols=360,nros=180) >> R> lai[] <- 1:ncell(lai) >> >> R> idx <- lai < 1000 >> R> emiss_0 <- lai >> R> emiss_0[] <- 0.95 >> R> emiss_0[idx] <- 0.95 + (lai[idx]*0.01) >> >> R> emiss_nb <- lai >> R> emiss_nb[] <- 0.98 >> R> emiss_nb[!idx] <- 0.97+(lai[!idx]*0.0033) >> R> ?Which # from raster package >> >> Other gurus on the list might suggest more efficient way[s] of doing this. >> >> HTH, >> Vijay. >> >> On Tue, Sep 15, 2015 at 10:51 PM, Thiago V. dos Santos >> <thi_vel...@yahoo.com.br> wrote: >> > Hi all, >> > >> > This is probably a silly question, but I could not find an appropriate >> answer somewhere else. >> > >> > I am trying create a raster based on conditional statements applied on >> an original raster. >> > >> > This is some sample code: >> > >> > lai <- raster(ncols=360, nrows=180) >> > lai[] <- 1:ncell(lai) >> > >> > if (lai < 1000) { >> > >> > emiss_0 <- 0.95 + (0.01 * lai) >> > emiss_nb <- 0.97 + (0.0033 * lai) >> > >> > >> > } else if (lai >= 1000) { >> > >> > >> > emiss_0 <- 0.95 >> > emiss_nb <- 0.98 >> > >> > >> > } >> > >> > Error in if (lai < 3) { : argument is not interpretable as logical >> > >> > >> > What would be the right way to do that? >> > Greetings, >> > -- Thiago V. dos Santos >> > >> > PhD student >> > Land and Atmospheric Science >> > University of Minnesota >> > >> > _______________________________________________ >> > R-sig-Geo mailing list >> > R-sig-Geo@r-project.org >> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo >> >> _______________________________________________ >> R-sig-Geo mailing list >> R-sig-Geo@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-sig-geo >> > > > > -- > *Andrew P. Vitale* > Staff Research Scientist > Desert Research Institute > 2215 Raggio Pkwy > Reno, NV 89512 > > [[alternative HTML version deleted]] > > _______________________________________________ > R-sig-Geo mailing list > R-sig-Geo@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-sig-geo _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo