Если вы хотите, чтобы каждый растр в стеке, вам нужно l oop поверх каждого с помощью lapply . Это вернет список слоев многоугольника. Затем вам нужно преобразовать каждый компонент списка в мультиполигон SF. Наконец, вам необходимо объединить функции (обратите внимание, что c - это функция c ()). shp должен быть вашим мультиполигоном. Возможно, вы не захотите растворять полигоны, вы не совсем ясно дали понять, что вы хотите.
a <- lapply(as.list(raster), rasterToPolygons, dissolve=TRUE)
b <- lapply(a, st_as_sf) # convert to sf multipolygon
shp <- Reduce(c, b) # combine all polygons to one
В качестве примечания, вероятно, не очень хорошо использовать растр в качестве имени переменной, потому что пакет растров имеет функцию под названием растр.