シェープファイルの各ポリゴンに対して計算された平均 +/- 2.5 std を超える値を削除して、ラスター ファイルを標準化しようとしています。ゾーン統計を計算してシェープファイルにフィードバックすることはできましたが、シェープファイルに含まれるデータでラスター ファイルをマスクすることができません。コードの最後の 2 行を実行すると、エラー メッセージが表示されます。平均 + 2.5 std を超える値を抽出すると、出力としてラスターではなく値 (NA) のみが得られ、その結果、マスク関数は次のエラーを返します。
(関数 (classes、fdef、mtable) のエラー: シグネチャ '"RasterBrick"、"logical"' の関数 'mask' の継承されたメソッドが見つかりません</p>
#Read raster file
library(raster)
prec <- getData('worldclim', var='prec', res=10)
#Read shapefile
france <- getData('GADM', country='FRA', level=1)
#Convert shapefile to raster
r_fra <- rasterize(france, prec)
#Calculate mean for each polygon
mean_fra_prec <- zonal(prec, r_fra, FUN='mean')
#Calculate standard deviation for each polygon
std_fra_prec <- zonal(prec, r_fra, FUN = 'sd')
#Calculate mean +/- 2.5 std for each polygon
ul_prec <- mean_fra_prec + (2.5 * std_fra_prec)
ll_prec <- mean_fra_prec - (2.5*std_fra_prec)
#Merge mean +/- 2.5 std for each polygon
x <- data.frame(zone=1:22)
ul_prec2 <- merge(x, ul_prec, by='zone', all.x=TRUE)
ll_prec2 <- merge(x, ul_prec, by='zone', all.x=TRUE)
#Join new data to shapefile
france@data <- cbind(france@data, ul_prec2[,-1])
france@data <- cbind(france@data, ll_prec2[,-1])
#Remove values above mean + 2.5 std for each polygon
ext_prec <- prec[!(prec > france@data$ul_prec2)] <- NA #Values above mean + 2.5 std
ma_prec <- mask(prec, ext_prec) #Mask values above mean + 2.5 std