I am using the mask function in the raster package (2.2-38) to mask out
areas within an image that are outside an area of interest (AOI). There are
NAs within this AOI that are meaningful - after masking the image I am
using freq to tabulate these NAs along with the other values in my AOI. For
this reason, I am using the "updatevalue" option in the mask function to
recode all areas outside of my AOI to a value (say 99) so that I can ignore
these areas in subsequent analysis, without having ignored areas share a
value (NA) with areas inside my AOI.

However, the mask function does not operate as I expected - areas in the
image that should be masked but that are NA prior to masking are not set to
"updatevalue". Is there an way to tell the mask function to recode all
areas (regardless of their initial value) to updatevalue? The below example
shows my problem:

library(raster)
# Setup an image with two NA values. Make one NA value inside
# the AOI, and make the other outside the AOI
img <- matrix(1, nrow=5, ncol=5)
img[3, 2] <- NA # Inside AOI
img[1, 2] <- NA # Outside AOI
img <- raster(img)
plot(img)

# Setup a mask where only the 3x3 region in the center of img is retained
msk <- matrix(1, nrow=5, ncol=5)
msk[1,] <- NA
msk[5,] <- NA
msk[,1] <- NA
msk[,5] <- NA
msk <- raster(msk)
plot(msk)

# Apply mask
masked_image <- mask(img, msk, updatevalue=2)

# Notice that cell (1, 2) of masked_image is NA, instead of the updatevalue
(2).
# This cell was not affected by the mask because it was NA prior to calling
mask.
# Is there a way to tell the mask function to set all masked areas to
updatevalue,
# regardless of whether a cell is NA prior to masking?
plot(masked_image)

Thanks,
Alex

-- 
Alex Zvoleff
Postdoctoral Associate
Tropical Ecology Assessment and Monitoring (TEAM) Network
Conservation International
2011 Crystal Dr. Suite 500, Arlington, Virginia 22202, USA
Tel: +1-703-341-2749, Fax: +1-703-979-0953, Skype: azvoleff
http://www.teamnetwork.org | http://www.conservation.org

	[[alternative HTML version deleted]]

