Как запустить разные формулы на разных слоях в R
Я скачал климатические данные worlclim/BIO, которые имеют 16 слоев. 1-11 слоев, которые являются данными о температуре. Остальные данные об осадках. Когда я проверил документ, я должен преобразовать данные о единицах температуры по разным коэффициентам преобразования. 1-2,4-11 слоев следует разделить на 10, чтобы преобразовать градусы Цельсия, и 3-4 слоя на 100. Для этого я написал следующий код:
temp1<-clim[[1:2]]/10
temp2 <-clim[[5:11]]/10
temp3<-clim[[3:4]]/100
Stack them back according to the same order as they were in original data:
clim <-stack(temp1,temp3,temp2)
Мой вопрос заключается в том, как рассчитать разные формулы на разных слоях и вернуть их в исходный порядок? Я хочу знать другой способ сделать эти шаги.
Спасибо!
1 ответ
Решение
Проще всего было бы определить вектор "факторов деления", а затем просто разделить стек по этому вектору. Таким образом, вам не нужно размещать полосы в "оригинальном" порядке:
library(raster)
a <- raster::raster(ncols = 10, nrows = 10)
a <- raster::init(a, runif)
# create a stack
b <- raster::stack(a,a,a,a,a,a)
# define vector of dividing factors
divs <- c(1,1,10,10,100,100)
# compute
c <- b / divs
c
class : RasterBrick
dimensions : 10, 10, 100, 6 (nrow, ncol, ncell, nlayers)
resolution : 36, 18 (x, y)
extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : layer.1, layer.2, layer.3, layer.4, layer.5, layer.6
min values : 5.919103e-03, 5.919103e-03, 5.919103e-04, 5.919103e-04, 5.919103e-05, 5.919103e-05
max values : 0.99532098, 0.99532098, 0.09953210, 0.09953210, 0.00995321, 0.00995321