【发布时间】:2020-05-08 15:24:40
【问题描述】:
我有一个 191 层的 RasterStack,具有以下命名约定:
[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))
这适用于堆栈中的第一个栅格,但不适用于其余栅格。这是错误: "参数 'pattern' 的长度 > 1 并且只使用第一个元素"
有没有办法让它遍历列表中的所有名称?
【问题讨论】: