Подмножество RasterStack на основе частичного совпадения строк - PullRequest
0 голосов
/ 08 мая 2020

У меня есть RasterStack с 191 слоем со следующим соглашением об именах:

[1] "LC08_L1TP_037035_20130501_20170310_01_T1_sr_ndvi" "LC08_L1TP_037035_20130602_20170310_01_T1_sr_ndvi" 

...

У меня также есть отдельный data.frame (df_filtered), содержащий список эти растры после применения набора условий фильтрации дали 161 растр. Однако имена файлов, перечисленные в df_filtered, имеют несколько иное соглашение об именах, где последняя часть («_sr_ndvi») имени файла была удалена:

  ID
1 LC08_L1TP_037035_20130501_20170310_01_T1 
2 LC08_L1TP_037035_20130602_20170310_01_T1

Я хотел бы подмножество исходного стека 191 растр, чтобы включить только те, которые перечислены в df_filtered. Мой подход заключался в использовании grep для частичного совпадения. Вот код, который я пробовал:

rasters_filtered <- raster::subset(my_stack, grep(df_filtered$ID, names(my_stack), value = T))

Это работает для первого растра в стеке, но не для остальных. Вот ошибка: «аргумент 'шаблон' имеет длину> 1, и будет использоваться только первый элемент»

Есть ли способ заставить его перебирать все имена в списке?

1 Ответ

0 голосов
/ 23 июня 2020

Может быть, вы могли бы сделать что-то вроде:

names(my_stack) <- gsub('_sr_ndvi', '', names(my_stack)) #to eliminate suffix in the stack

raster_filtered <- raster::subset(my_stack, df_filtered$ID)
...