как суммировать растровый слой в стек растров R

#r #r-raster #gstat

Вопрос:

Я работаю со стеком растров 300 SGS, sims , и растровым слоем, trend . Я пытаюсь суммировать trend каждый из растровых слоев в стеке. Моя конечная цель-создать новый растровый стек моих симуляций с картой тренда, чтобы затем я мог выполнить другие операции.

то, что я искал, было бы чем-то вроде:

 sims1 <- sims   trend  

так что каждый слой был бы примерно таким:

 >names(sims1) [1] "sim1 trend" "sim2 trend" "sim3 trend" "sim4 trend"...  

Ответ №1:

Операции в R обычно векторизуются с использованием коротких переменных. Таким образом, вы можете сделать

 1:3   10 #[1] 11 12 13  

То же самое относится и к растровым данным.

Примеры данных:

 library(raster) sims <- stack(system.file("external/rlogo.grd", package="raster"))  trend <- raster(sims) values(trend) <- 1:ncell(trend)  

Решение:

 x <- sims   trend names(x) <- paste0(names(sims), ".trend")  x #class : RasterBrick  #dimensions : 77, 101, 7777, 3 (nrow, ncol, ncell, nlayers) #resolution : 1, 1 (x, y) #extent : 0, 101, 0, 77 (xmin, xmax, ymin, ymax) #crs :  proj=merc  lon_0=0  k=1  x_0=0  y_0=0  datum=WGS84  units=m  no_defs  #source : memory #names : red.trend, green.trend, blue.trend  #min values : 256, 256, 256  #max values : 8032, 8032, 8032   

Ответ №2:

 list_sims <- list() # list to save sums  for (i in 1:nlayers(sims)) {   list_sims[[i]] <- sims[[i]]   trend  } sims1 <- stack(list_sims)