我试图从R studio上的.tiffMap文件中提取一个框的值,并计算每个框的平均值。每个框都产生了NA,我需要删除这些NA才能计算平均值。
我已经加载了tiff文件,设置了最小值和最大值,并绘制了Map:
DEM <- raster("del15N_130_raster.tif")
DEM<- setMinMax(DEM)
plot(DEM)
然后,我需要在Map上添加一个框,并通过以下方式从框中提取值
AntC <- read_sf("shp/Antartica_typeC.shp")
# Plot the raster with the shape file box
plot(AntC, add = T)
# get mean values from shape
vals <- terra::extract(DEM, AntC, na.rm=TRUE )
vals_mean <- mean(vals$layer)
由于存在从Map值生成的NA,因此收到错误
Warning message:
In mean.default(vals$layer) :
argument is not numeric or logical: returning NA
我已尝试以下选项
na.omit(DEM)
vals_mean <- mean(vals$layer, na.rm=TRUE))
vals<-vals[!is.na(vals)]
meanvals <- terra::extract(
DEM,
AntC,
fun="mean", na.rm=TRUE
)
我在“vals”中仍有NA,但仍收到相同的错误
1条答案
按热度按时间wtzytmuj1#
你能做到
如果仍存在
NA
,则可能是因为面(框)位于栅格之外,或者面(框)非常小。在后一种情况下,可使用以下方法解决问题