Вот вариант решения Пауло
library(raster)
r <- raster(nc=10, nr=5)
r[] <- runif(ncell(r), min=10, max=20) * 2
s <- setValues(r, sample(c(1:4), replace = T, size=50))
rs <- stack(r, s)
names(rs) <- c('r', 's')
d <- as.data.frame(rs)
# all classes
boxplot(r~s, data= d)
# only class 2 and 4
boxplot(r~s, data=d[d$s %in% c(2,4), ])
Если вы не можете сделать d
из-за слишком больших растров, вы можете взять большую выборку вместо приблизительного результата
n <- 10000
d <- data.frame(sampleRegular(rs, n))