terra::extract 是否可以使用不同的函数来提取栅格的不同类型的图层?

Can different functions be used to extract different types of layers of a raster using terra::extract?

我的目标是从 栅格 中提取一组 多边形 位置的数据。栅格有许多数值变量和一些分类变量。我想提取以此为条件的值,e.i,如果变量是数字,则为每个多边形获取 mean,如果变量是分类的,则获取 mode.

现在我这样做(看到 'numeric' 图层是数字,'categorical' 有代表类别的数字):

extract_numeric <- terra::extract(x = raster,
                                  y = vect(polygons),
                                  fun = mean,
                                  layer = 'numeric',
                                  rm.na=T)

extract_categorical <- terra::extract(x = raster,
                                      y = vect(polygons),
                                      fun = mode,
                                      layer = 'categorical',
                                      rm.na=T)

extract <- c(extract_numeric, extract_categorical)

是否可以根据图层类型提取所有值?即使我希望不同的数字层在提取时得到不同的 fun。可以吗?

谢谢!

不,那是做不到的。您还可以做的是使用名称或索引

子集 x
e_num <- extract(x[[c(1:3, 6:8)]], v, fun=mean)
e_cat <- extract(x[[4:5]], v, fun=mean)

但这类似于使用 layer 参数。

你也可以

e_list <- extract(x, v)

然后 lapply 您自己的函数在该列表中。