I need to replace the NA
's in the raster object (r
) from the example below.
library(raster)
filename <- system.file("external/test.grd", package="raster")
r <- raster(filename)
I also tried to remove these these (and place the result in a data.frame
), but to no avail.
dfr <- as.data.frame(r, na.rm=T)
summary(dfr)
# test
# Min. : 128.4
# 1st Qu.: 293.2
# Median : 371.4
# Mean : 423.2
# 3rd Qu.: 499.8
# Max. :1805.8
# NA's :6097
A more memory safe approach (for large files) would be to use reclassify:
library(raster)
filename <- system.file("external/test.grd", package="raster")
r <- raster(filename)
rna <- reclassify(r, cbind(NA, 250))
And here are three ways in which you can do this with terra
library(terra)
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
x <- classify(r, cbind(NA, -99))
y <- subst(r, NA, -99)
z <- ifel(is.na(r), -99, r)
I'm not sure it makes sense to remove NA
values from a raster
object, but you can easily replace it.
For example:
oldpar <- par(mfrow=c(1, 2))
plot(r)
r[is.na(r)] <- 250
plot(r)
par(oldpar)
If you really want to, you can extract the raster values into a vector and then remove the NA
values. (Although, since you lose the spatial information, I can't see how this can be helpful.)
r <- raster(filename)
r <- values(r)
head(r)
[1] NA NA NA NA NA NA
head(na.omit(r))
[1] 633.686 712.545 654.162 604.442 857.256 755.506
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With