Пожалуйста, всегда включайте минимальный автономный воспроизводимый пример
Пример данных
library(raster)
s <- stack(system.file("external/rlogo.grd", package="raster"))
xy1 <- xy2 <- xy3 <- matrix(c(10,17, 6,10,71,60,62,71), ncol=2)
xy2[,1] <- xy2[,1] + 30
xy3[,2] <- xy3[,2] - 30
p <- spPolygons(xy1, xy2, xy3)
#plot(r, 1)
#lines(p)
Что вы после
rm = matrix(c(0,100,0,100,150,2,150,255,3), ncol=3, byrow=TRUE)
out <- list()
for (i in 1:length(p)) {
x <- crop(s, p[i,])
x <- mask(x, p[i,])
out[[i]] <- reclassify(x, rm)
}
То, что вы говорите о unstack, делает не имеет смысла (и unlist не работает). Я бы посоветовал против этого, но вы могли бы сделать
out2 <- lapply(out, unstack)
Я не уверен, что вы действительно после. Если вам нужны значения ячеек, вы можете сделать это намного проще (не нужно указывать al oop) и сделать
r <- reclassify(s, rm)
e <- extract(r, p)
К вашему вопросу о lapply vs al oop. С точки зрения производительности это редко имеет значение. lapply может быть кратким, но в подобных случаях лучше писать al oop, так как его легче читать и писать, особенно если вы не используете %>%
.