Lars,
It runs fine in those cases. You get an error because you have
time=nlayers(s) where it should be time=1:nlayers(s)
Best, Robert

On Thu, Apr 12, 2012 at 10:54 AM, Lars Dalby <lars.dalby@gmail.com> wrote:

> Hi Robert
>
> Thanks for your reply!
> Your suggestion solved the problem, because in my case I do have cells
> where
> there is NA in all layers.
>
> But, I'm still a little puzzled about why it is not running in the case
> where there is NA in a cell in only one of the layers.
> lm() normally works in a case like this, so I am not sure why it is
> returning an error here?
>
>
> require(raster)
> # From help to calc function
> # create data
> r <- raster(nrow=10, ncol=10)
> s1 <- s2<- list()
> for (i in 1:12) { s1[i] <- setValues(r, rnorm(ncell(r), i, 3) )
>        s2[i] <- setValues(r, rnorm(ncell(r), i, 3) )}
> s1 <- stack(s1)
> s2 <- stack(s2)
> s <- stack(s1, s2)
> r <- setValues(r, rnorm(ncell(r), 1, 3) )
> plot(r)
> r[1] <- NA #Setting top left corner to NA
> plot(r)
> s <- stack(s, r) # Now only one of the rasters has a NA value
>
> # So this is equivalent to doing a lm with one NA value:
> a <- rnorm(10, 5, 2)
> b <- c(1:9, NA)
> lm(a~b) # This seem to work ok.
>
> # But with the brick:
>
> fun <- function(x) { lm(x ~ time)$coefficients[2] }
>
> time <- nlayers(s)
> x5 <- calc(s, fun) # Error in model.frame.default(formula = x ~ time,
> drop.unused.levels = TRUE) : variable lengths differ (found for 'time')
>
> Best regards
> Lars
>
> Lars Dalby
> Msc. PhD student
> Ecoinformatics & Biodiversity
> Department of Bioscience, Aarhus University
> Denmark
>
>
> --
> View this message in context:
> http://r-sig-geo.2731867.n2.nabble.com/Problems-with-NA-values-and-lm-in-calc-in-raster-package-tp7455990p7460272.html
> Sent from the R-sig-geo mailing list archive at Nabble.com.
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

	[[alternative HTML version deleted]]

