Search code examples
rspatialraster

How to replace NA's in a raster object


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

Solution

  • 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)
    

    enter image description here


    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