У меня есть две растровые карты из двух моментов времени (t1 и t2) с двумя категориями растительного покрова в каждой (LC1, LC2). Я хочу наложить правило, что ячейка LC2 в t1 не может измениться на ячейку LC1 в t2, то есть только LC1 может измениться на LC2 во времени, но не наоборот. Мне трудно придумать правило для этого в R. То, что я имел в виду, было что-то вроде этого:
#create test rasters
r <- raster(nrows=25, ncols=25, vals=round(rnorm(625, 3), 0)) #land-use/cover raster
r[ r > 2 ] <- 2
r[ r < 1 ] <- 1
r2 <- r
plot(r2) #r2 is t2
r <- raster(nrows=25, ncols=25, vals=round(rnorm(625, 3), 0)) #land-use/cover raster
r[ r > 2 ] <- 2
r[ r < 1 ] <- 1
plot(r) #r is t1
r_fix <- overlay(r, r2, fun = function(x, y) {
if (x[ x==2 ] & y[ y==1 ]) { #1 is LC1, 2 is LC2
x[ x==2 ] <- 1 }
return(x)
})
Но он возвращает ошибку (из-за того, как я использую оператор if с растрами?):
Error in (function (x, fun, filename = "", recycle = TRUE, forcefun = FALSE, :
cannot use this formula, probably because it is not vectorized
Интересно, есть ли простой способ реализовать нечто подобное тому, что работает с растрами? Заранее спасибо.