subs.Rd
Substitute (replace) values in a Raster* object with values in a data.frame
. The data.frame
should have a column to identify the key (ID) to match with the cell values of the Raster* object, and one or more columns with replacement values. By default these are the first and second column but you can specify other columns with arguments by
and which
. It is possible to match one table to multiple layers, or to use multiple layers as a single key, but not both.
# S4 method for class 'Raster,data.frame'
subs(x, y, by=1, which=2, subsWithNA=TRUE, filename='', ...)
Raster* object
data.frame
column number(s) or name(s) identifying the key (ID) to match rows in data.frame y
to values of the Raster object
column number or name that has the new (replacement) values
logical. If TRUE
values that are not matched become NA. If FALSE
, they retain their original value (which could also be NA
). This latter option is handy when you want to replace only one or a few values. It cannot be used when x
has multiple layers
character. Optional output filename
additional arguments as for writeRaster
You could obtain the same result with reclassify
, but subs
is more efficient for simple replacement. Use reclassify
if you want to replace ranges of values with new values.
You can also replace values using a fitted model. E.g. fit a model to glm
or loess
and then call predict
Raster object
r <- raster(ncol=10, nrow=10)
values(r) <- round(runif(ncell(r)) * 10)
df <- data.frame(id=2:8, v=c(10,10,11,11,12:14))
x <- subs(r, df)
x2 <- subs(r, df, subsWithNA=FALSE)
df$v2 <- df$v * 10
x3 <- subs(r, df, which=2:3)
s <- stack(r, r*3)
names(s) <- c('first', 'second')
x4 <- subs(s, df)
x5 <- subs(s, df, which=2:3)