#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)