[R-sig-Geo] raster: stackApply problems..

Leonidas Liakos |eon|d@@_||@ko@ @end|ng |rom y@hoo@gr
Tue Nov 26 17:18:56 CET 2019


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 using r-project.org <mailto:r-sig-geo using 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 using r-project.org <mailto:R-sig-Geo using r-project.org>
>     https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list