st_apply apply a function to one or more array dimensions
st_apply apply a function to array dimensions: aggregate over space, time, or something else
## S3 method for class 'stars' st_apply( X, MARGIN, FUN, ..., CLUSTER = NULL, PROGRESS = FALSE, FUTURE = FALSE, rename = TRUE, .fname )
X |
object of class |
MARGIN |
see apply; index number(s) or name(s) of the dimensions over which |
FUN |
see apply and do see below at details. |
... |
arguments passed on to |
CLUSTER |
cluster to use for parallel apply; see makeCluster |
PROGRESS |
logical; if |
FUTURE |
logical;if |
rename |
logical; if |
.fname |
function name for the new attribute name (if one or more dimensions are reduced) or the new dimension (if a new dimension is created); if missing, the name of |
FUN is a function which either operates on a single object, which will be the data of each iteration step over dimensions MARGIN, or a function that has as many arguments as there are elements in such an object. See the NDVI examples below. Note that the second form can be very much faster e.g. when a trivial function is not being called for every pixel, but only once (example).
object of class stars
with accordingly reduced number of dimensions; in case FUN
returns more than one value, a new dimension is created carrying the name of the function used; see the examples.
tif = system.file("tif/L7_ETMs.tif", package = "stars") x = read_stars(tif) st_apply(x, 1:2, mean) # mean band value for each pixel st_apply(x, c("x", "y"), mean) # equivalent to the above st_apply(x, 3, mean) # mean of all pixels for each band st_apply(x, "band", mean) # equivalent to the above st_apply(x, 1:2, range) # min and max band value for each pixel fn_ndvi1 = function(x) (x[4]-x[3])/(x[4]+x[3]) # ONE argument: will be called for each pixel fn_ndvi2 = function(red,nir) (nir-red)/(nir+red) # n arguments: will be called only once ndvi1 = st_apply(x, 1:2, fn_ndvi1) ndvi2 = st_apply(x[,,,3:4], 1:2, fn_ndvi2) # note that we select bands 3 and 4 in the first argument all.equal(ndvi1, ndvi2) # to get a progress bar also in non-interactive mode, specify: if (require(pbapply)) { # install it, if FALSE pboptions(type = "timer") }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.