该代码适用于一个栅格和一个形状文件。我尝试扩展代码以对两个栅格文件(当前和未来的气候、配对箱线图)使用 stack(),因为 extract(r,v) 可用于一个栅格文件和一个形状文件。您知道还有其他可能性吗?我假设它必须在图书馆(terra)内
# load libraries
library(terra)
library(ggplot2)
library(raster)
# Load shp and raster from example files of terra
(v <- vect(system.file("ex/lux.shp", package="terra")))
(r1 <- rast(system.file("ex/elev.tif", package="terra")))
(r2 <- rast(system.file("ex/elev.tif", package="terra")))
r1r2<-stack(r1,r2)
Error in .local(x, ...) :
unused argument (new("SpatRaster", ptr = new("Rcpp_SpatRaster", .xData = <environment>)))
# extract, include names from vector attributes
e <- extract(r,v)
e$NAME_2 <- v$NAME_2[e$ID]
str(e)
# plot
ggplot(e, aes(x = NAME_2, y = elevation)) +
geom_boxplot() +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45))
您的问题实际上似乎是“如何将两个 SpatRaster 组合成一个对象。在您的上下文中,答案是使用
c
library(terra)
v <- vect(system.file("ex/lux.shp", package="terra"))
r1 <- rast(system.file("ex/elev.tif", package="terra"))
r2 <- rast(system.file("ex/elev.tif", package="terra")) * 2
x <- c(r1, r2)
names(x) <- c("A", "B")
e <- extract(x, v, ID=FALSE)
boxplot(e)