если у меня есть этот растр
r1 <- raster(nrow=10, ncol=10)
vv=c(1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5,1:5)
values(r1) <- vv
Как это сделать:
replace by
3 1
5 2
2 3
4 5
1 4
я знаю, что мы можем сделать
r1[r1==3]=1 but then it will problematic with values already = 1 (that I need to replace by 4!!
Решение проблемы
В этом конкретном случае (где текущие значения представляют собой непрерывные целые числа с низким значением, начинающиеся с 1), вы можете использовать текущие значения в качестве индексов вектора замены:
r1[] <- c(4, 3, 1, 5, 2)[r1@data@values]
Более общее решение, если у вас есть и то и другое, replace
и by
определено,
r1[] <- by[match(r1@data@values, replace)]
Комментариев нет:
Отправить комментарий