roll function

Rolling (moving) functions

Rolling (moving) functions

Compute "rolling" or "moving" values, such as the "rolling average" for each cell in a SpatRaster.

See focal for spatially moving averages and similar computations. And see cumsum and other cum* functions to compute cumulate values.

## S4 method for signature 'SpatRaster' roll(x, n, fun=mean, type="around", circular=FALSE, na.rm=FALSE, filename="", ..., wopt=list()) ## S4 method for signature 'numeric' roll(x, n, fun=mean, type="around", circular=FALSE, na.rm=FALSE, ...)

Arguments

  • x: SpatRaster or numeric
  • n: integer > 1. The size of the "window", that is, the number of sequential cells to use in fun
  • fun: a function like mean, min, max, sum
  • type: character. One of "around", "to", or "from". The choice indicates which values should be used in the computation. The focal cell is always used. If type is "around", (n-1)/2 before and after the focal cell are also included. If type = "from", n-1 cells are after the focal cell are included. If type = "to", n-1 cells before the focal cell are included. For example, when using n=3 for element 5 of a vector; "around" used elements 4,5,6; "to" used elements 3,4,5, and "from" uses elements 5,6,7
  • circular: logical. If TRUE, the data are considered to have a circular nature (e.g. days or months of the year), such that there are no missing values before first or after the last value.
  • na.rm: logical. If TRUE, NA values should be ignored (by fun)
  • filename: character. Output filename
  • ...: additional arguments for fun
  • wopt: list with named options for writing files as in writeRaster

Returns

Same as x

See Also

cumsum, focal

Examples

## numeric roll(1:12, 3, mean) roll(1:12, 3, mean, "to") roll(1:12, 3, mean, circular=TRUE) ## SpatRaster r <- rast(ncol=2, nrow=2, nlyr=10, vals=1) r[1,2] <- 2 r[2,2] <- 4 values(roll(r, n=3, "sum", "from", na.rm=FALSE)) values(roll(r, n=3, "sum", "from", na.rm=TRUE)) values(roll(r, n=3, "sum", "from", circular=TRUE)) values(roll(r, n=3, "sum", "to", na.rm=TRUE)) values(roll(r, n=3, "sum", "around", circular=TRUE))
  • Maintainer: Robert J. Hijmans
  • License: GPL (>= 3)
  • Last published: 2025-02-26