If you read the code/help for `stackApply` and `zApply` you'll see that the results that you obtain make sense (at least they seem sensible/reasonable to me). IMO, if you want to control the ordering of your layers then just use sapply, like how you've used for ver_mean. IMO, this is the only reliable (safe?), and quite a readable, way to accomplish what you're trying to do. Just my 2 cents. -- Vijay.
On Tue, Nov 26, 2019 at 11:19 AM Leonidas Liakos via R-sig-Geo < r-sig-geo@r-project.org> wrote: > I added raster::zApply in my tests to validate the results. However, the > indices of the names of the results are different now. Recall that the > goal is to calculate from a raster stack time series the mean per day of > the week. And that problem I have is that stackApply, zApply and > calc/sapply return different indices in the result names. New code is > available here: > https://gist.github.com/kokkytos/93f315a5ecf59c0b183f9788754bc170 > I'm really curious about missing something. > > > On 11/20/19 3:30 AM, Frederico Faleiro wrote: > > Hi Leonidas, > > > > both results are in the same order, but the name is different. > > You can rename the first as in the second: > > names(res) <- names(res2) > > > > I provided an example to help you understand the logic. > > > > library(raster) > > beginCluster(2) > > r <- raster() > > values(r) <- 1 > > # simple sequential stack from 1 to 6 in all cells > > s <- stack(r, r*2, r*3, r*4, r*5, r*6) > > s > > res <- clusterR(s, stackApply, args = list(indices=c(2,2,3,3,1,1), fun > > = mean)) > > res > > res2 <- stackApply(s, c(2,2,3,3,1,1), mean) > > res2 > > dif <- res - res2 > > # exatly the same order because the difference is zero for all layers > > dif > > # rename > > names(res) <- names(res2) > > > > Best regards, > > > > Frederico Faleiro > > > > On Tue, Nov 19, 2019 at 4:15 PM Leonidas Liakos via R-sig-Geo > > <r-sig-geo@r-project.org <mailto:r-sig-geo@r-project.org>> wrote: > > > > I run the example with clusterR: > > > > no_cores <- parallel::detectCores() -1 > > raster::beginCluster(no_cores) > > ?????? res <- raster::clusterR(inp, raster::stackApply, args = > > list(indices=c(2,2,3,3,1,1),fun = mean)) > > raster::endCluster() > > > > And the result is: > > > > > res > > class?????????? : RasterBrick > > dimensions : 180, 360, 64800, 3?? (nrow, ncol, ncell, nlayers) > > resolution : 1, 1?? (x, y) > > extent???????? : -180, 180, -90, 90?? (xmin, xmax, ymin, ymax) > > crs?????????????? : +proj=longlat +datum=WGS84 +ellps=WGS84 > > +towgs84=0,0,0 > > source???????? : memory > > names?????????? : layer.1, layer.2, layer.3 > > min values :???????? 1.5,???????? 3.5,???????? 5.5 > > max values :???????? 1.5,???????? 3.5,???????? 5.5?? > > > > > > layer.1, layer.2, layer.3 (?) > > > > So what corrensponds to what? > > > > > > If I run: > > > > res2 <- stackApply(inp,c(2,2,3,3,1,1),mean) > > > > The result is: > > > > > res2 > > class : RasterBrick > > dimensions : 180, 360, 64800, 3 (nrow, ncol, ncell, nlayers) > > resolution : 1, 1 (x, y) > > extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax) > > crs : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 > > source : memory > > names : index_2, index_3, index_1 > > min values : 1.5, 3.5, 5.5 > > max values : 1.5, 3.5, 5.5 > > > > There is no consistency with the names of the output and obscure > > correspondence with the indices in the case of clusterR > > > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-sig-Geo mailing list > > R-sig-Geo@r-project.org <mailto: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 > [[alternative HTML version deleted]] _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo