【问题标题】:Subsetting RasterStack based on String Partial Match基于字符串部分匹配的子集 RasterStack
【发布时间】: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 并且只使用第一个元素"

有没有办法让它遍历列表中的所有名称?

【问题讨论】:

    标签: r r-raster


    【解决方案1】:

    也许你可以这样做:

    names(my_stack) <- gsub('_sr_ndvi', '', names(my_stack)) #to eliminate suffix in the stack
    
    raster_filtered <- raster::subset(my_stack, df_filtered$ID)
    

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 2016-10-18
      • 2022-10-19
      • 2022-01-17
      • 2018-12-17
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多