Как запустить разные формулы на разных слоях в R - PullRequest
0 голосов
/ 25 января 2019

Я скачал климатические данные 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 Ответ

0 голосов
/ 25 января 2019

Проще всего было бы определить вектор «факторов деления», а затем просто разделить стек по этому вектору. Таким образом, вам не нужно размещать полосы в «оригинальном» порядке:

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...