#r #raster #na
#r #растр #na
Вопрос:
Я довольно новичок в R и растровых данных. У меня есть два больших растровых слоя. Один растровый слой имеет только «1» в качестве своих значений — все остальные значения (те, которые НЕ были 1) были установлены в «NA». Я хотел бы, чтобы второй растровый слой имел «NA» в тех же местах / пикселях, где первый растр имеет «NA». Оба растровых слоя имеют одинаковую протяженность и разрешение.
До сих пор я пытался сложить растры и использовать функцию NAvalue, чтобы создать растр «NA», где другой (первый растр) == «NA». Это не сработало.
Я также подумал, что, возможно, сработает функция cover (), но это просто изменяет значения NA в одном слое на значения, отличные от NA, которые видны в других слоях. (Но я хочу сделать обратное — изменить не-NA / допустимые значения на NA).
Я бы предположил, что это простое исправление; однако я везде искал, как выполнить эту задачу, и ничего не могу найти.
Ответ №1:
Вы ищете mask
метод
library(raster)
r <- raster(ncol=10, nrow=10)
m <- raster(ncol=10, nrow=10)
values(r) <- 1:ncell(r)
values(m) <- rep(c(1,NA,1,NA), 25)
mr1 <- mask(r, m)
Поскольку все значения или m
равны 1, вы также могли бы сделать
mr2 <- r * m
Комментарии:
1. Я также применил is.na функция для растрового слоя, где я хотел NAs (называется rasterlayer3 в стеке). Это то, что я использовал: stack$ rasterlayer3[is.na (stack$rasterlayer1)] <- NA Спасибо за ваше предложение!