如何根据每个项目中的相似字符从r中的列表中选择项目



我正试图从列表中选择一些项目,并根据每个项目中的相似字符对它们进行分组。例如,我想用";20130409";并将它们分配给一个目录。求你了,我该怎么做?我试着使用循环,但没有用。

数据<-list.files('Output_crop/'(

"LC08_L1TP_044033_20130409_20180201_01_T1_B1.tif"LC08_L1TP_044033_20130409_20180201_01_T1_B10.tif";"LC08_L1TP_044033_20130409_20180201_01_T1_B11.tif"LC08_L1TP_044033_20130409_20180201_01_T1_B2.tif";"LC08_L1TP_044033_20130409_20180201_01_T1_B3.tif"LC08_L1TP_044033_20130409_20180201_01_T1_B4.tif";"LC08_L1TP_044033_20130409_20180201_01_T1_B5.tif"LC08_L1TP_044033_20130409_20180201_01_T1_B6.tif";"LC08_L1TP_044033_20130409_20180201_01_T1_B7.tif"LC08_L1TP_044033_20130409_20180201_01_T1_B8.tif";"LC08_L1TP_044033_20130409_20180201_01_T1_B9.tif"LC08_L1TP_044033_20130409_20180201_01_T1_BQA.tif";"LC08_L1TP_044033_20130416_20170310_01_T1_B1.tif"LC08_L1TP_044033_20130416_20170310_01_T1_B10.tif";"LC08_L1TP_044033_20130416_20170310_01_T1_B11.tif"LC08_L1TP_044033_20130416_20170310_01_T1_B2.tif";"LC08_L1TP_044033_20130416_20170310_01_T1_B3.tif"LC08_L1TP_044033_20130416_20170310_01_T1_B4.tif";"LC08_L1TP_044033_20130416_20170310_01_T1_B5.tif"LC08_L1TP_044033_20130416_20170310_01_T1_B6.tif";"LC08_L1TP_044033_20130416_20170310_01_T1_B7.tif"LC08_L1TP_044033_20130416_20170310_01_T1_B8.tif";"LC08_L1TP_044033_20130416_20170310_01_T1_B9.tif"LC08_L1TP_044033_20130416_20170310_01_T1_BQA.tif";"LC08_L1TP_044033_20130603_20170310_01_T1_B1.tif"LC08_L1TP_044033_20130603_20170310_01_T1_B10.tif";"LC08_L1TP_044033_20130603_20170310_01_T1_B11.tif"LC08_L1TP_044033_20130603_20170310_01_T1_B2.tif";"LC08_L1TP_044033_20130603_20170310_01_T1_B3.tif"LC08_L1TP_044033_20130603_20170310_01_T1_B4.tif";"LC08_L1TP_044033_20130603_20170310_01_T1_B5.tif"LC08_L1TP_044033_20130603_20170310_01_T1_B6.tif";"LC08_L1TP_044033_20130603_20170310_01_T1_B7.tif"LC08_L1TP_044033_20130603_20170310_01_T1_B8.tif";"LC08_L1TP_044033_20130603_20170310_01_T1_B9.tif"LC08_L1TP_044033_20130603_20170310_01_T1_BQA.tif";

您可以通过按grepl()过滤名称来完成此操作,而无需循环。函数grepl()在字符中查找正则表达式模式,并返回一个布尔值,指示它是否存在。

所以,如果你想得到所有包含";20130409";,你只需要写:

selection = data[grepl("20130409",data)]

向量selection然后仅包含包含该子串的条目。然后,您可以循环通过该矢量来移动或复制这些文件。

您可以使用以下命令获取所有唯一值(201304092013041620130603(:

samples <- (unique(substr(data,18,25)))

现在,您可以编写一个循环,在文件名中查找每个值,并将包含相应值的文件分组在一起。只有当值始终处于相同的位置并且具有相同的长度时,这才有效。

最新更新