У меня есть растровый слой со значениями ячеек 0, 0.9 и 1. У меня есть кадр данных, в первом столбце - идентификатор ячейки, а во втором столбце - значение 0.936. (В будущем эти значения во втором столбце могут отличаться, поэтому мне нужно, чтобы конкретная ячейка была заменена соответствующим значением в кадре данных)Функция subs {raster} не работает
В Gen_raster Я хочу заменить значения ячеек ячеек, соответствующих ID new_values [1] со значениями new_values [2].
Я попытался сделать это с помощью функции subs() (растровый пакет), но по какой-то причине значения new_values [1] не соответствуют идентификаторам соты Gen_raster, поэтому ничего не происходит с значениями ячейки Gen_raster.
Я попытался использовать функцию subs() funtion для примера с атрибутами similair (также используя растровый слой и кадр данных с двумя столбцами, int и num), и это действительно работает. Это код я использовал и характеристики растрового слоя и фрейм данных:
Gen_raster1<-subs(Gen_raster, new_values, subsWithNA=FALSE)
Где Gen_raster:
class : RasterLayer
dimensions : 401, 292, 117092 (nrow, ncol, ncell)
resolution : 0.04166667, 0.04166667 (x, y)
extent : -79.04166, -66.87499, -4.249997, 12.45834 (xmin, xmax, ymin, ymax)
coord. ref. : NA
data source : in memory
names : layer
values : 0, 1 (min, max)
и new_values:
'data.frame': 50 obs. of 2 variables:
$ id: int 7444 7446 7735 7745 8331 8924 9185 9473 13261 13554 ...
$ v : num 0.936 0.936 0.936 0.936 0.936 ...
Это является примером того, что Я использовал и которые действительно работали:
r <- raster(ncol=10, nrow=10)
r[] <- round(runif(ncell(r)) * 10)
df <- data.frame(id=2:8, v=c(10.003,10.03,11.006,11,12:14))
x <- subs(r, df)
x2 <- subs(r, df, subsWithNA=FALSE)
Я не вижу, какая разница между этими двумя методами, поэтому я не понимаю, почему идентификаторы ячеек new_values и Gen_raster не совпадают.
Есть ли у кого-нибудь предложения? Помог бы мне много .. спасибо!
Да это работает! Большое спасибо за помощь. Но я не понимаю, почему в примере, который я предоставляю с растровым слоем r и dataframe df, этот метод делает то же самое, что и метод, который вы предлагаете, и когда я пытаюсь это сделать для rasterlayer Gen_raster и dataframe new_values, это не работает ... Во всяком случае, спасибо за ответ! – Farilde
Это две довольно разные операции, одна - подстановка на основе значений, другая - на основе индекса. – RobertH