通过将其名称与其他名称列表进行匹配来提取栅格文件

时间:2017-11-24 09:57:46

标签: r pattern-matching

我有一个光栅文件列表,其名称中包含日期,我还有其他日期列表。我想只提取他们的名字或日期与我的日期列表匹配的光栅文件! 我怎么做! 这是我的代码,以便更好地理解!

files               <- list.files(full.names=T, pattern=paste0("_S2_B|L8_sr_"))
rootName            <- substring(basename(files),1,7)
date_raster         <- as.Date(rootName,'%Y%j')

然后在这里我得到每个光栅文件的日期名称,如下所示,

[1] "2013-04-15" "2013-04-15" "2013-04-15" "2013-04-15" "2013-04-15" "2013-04-15" "2013-04-24" "2013-04-24" "2013-04-24" "2013-04-24"
 [11] "2013-04-24" "2013-04-24" "2013-05-01" "2013-05-01" "2013-05-01" 

我只想提取日期名称与这些日期匹配的文件!

humid_date                 <- raster_humid$date


[1] "2014-05-13" "2014-07-23" "2014-09-02" "2014-09-18" "2015-01-31" "2015-09-12" "2015-09-21" "2015-12-10" "2015-12-28" "2016-01-14" "2016-04-13"
[12] "2016-05-23" "2016-05-25" "2016-07-12" "2016-07-22" "2016-07-25"

提前致谢,

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您可以获得文件名中所有日期的列表以及您要选择的日期列表。在这种情况下,您可以使用which(x %in% y),如下所示。由于我懒得重新格式化你的示例数据(对不起),我自己创建了一些并希望它们与你的相似。我希望这就是你要找的东西。 (您可能需要将date类型转换为character才能进行匹配)

files <- paste0(9:1, "file")
dates_files <- substr(files, 1,1)
select_dates <- as.character(c(1,3,5))

files[which(dates_files %in% select_dates)]
#[1] "5file" "3file" "1file"