r-在向量中的多个文件中选择前几个文件



我有一个名为rastlist的向量,它列出了使用以下代码指定的所有文件:

rastlist <- list.files(path = "raw_data/MODIS_TERRA/NDVI_FinalFitted", pattern=c('2013','.TIF$'), all.files=TRUE, 
full.names=TRUE)

以下是该对象包含的内容:

MOD09Q1_2013_之后的数字(例如,001、002、003……(表示一年中的日期。除了一年中的日子之外,名称的其余部分都是一样的。

rastlist
[1] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_001_NDVI_FinalFitted.tif"
[2] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_002_NDVI_FinalFitted.tif"
[3] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_003_NDVI_FinalFitted.tif"
[4] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_004_NDVI_FinalFitted.tif"
[5] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_005_NDVI_FinalFitted.tif"
[6] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_006_NDVI_FinalFitted.tif"
[7] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_007_NDVI_FinalFitted.tif"
[8] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_008_NDVI_FinalFitted.tif"
[9] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_009_NDVI_FinalFitted.tif"
[10] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_010_NDVI_FinalFitted.tif"
[11] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_011_NDVI_FinalFitted.tif"
[12] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_012_NDVI_FinalFitted.tif"
[13] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_013_NDVI_FinalFitted.tif"
[14] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_014_NDVI_FinalFitted.tif"
[15] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_015_NDVI_FinalFitted.tif"
[16] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_016_NDVI_FinalFitted.tif"
[17] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_017_NDVI_FinalFitted.tif"
[18] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_018_NDVI_FinalFitted.tif"
[19] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_019_NDVI_FinalFitted.tif"
[20] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_020_NDVI_FinalFitted.tif"
[21] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_021_NDVI_FinalFitted.tif"
[22] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_022_NDVI_FinalFitted.tif"
[23] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_023_NDVI_FinalFitted.tif"
[24] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_024_NDVI_FinalFitted.tif"
[25] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_025_NDVI_FinalFitted.tif"
[26] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_026_NDVI_FinalFitted.tif"
[27] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_027_NDVI_FinalFitted.tif"
[28] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_028_NDVI_FinalFitted.tif"
[29] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_029_NDVI_FinalFitted.tif"
[30] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_030_NDVI_FinalFitted.tif"
[31] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_031_NDVI_FinalFitted.tif"
[32] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_032_NDVI_FinalFitted.tif"
[33] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_033_NDVI_FinalFitted.tif"
[34] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_034_NDVI_FinalFitted.tif"
[35] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_035_NDVI_FinalFitted.tif"
[36] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_036_NDVI_FinalFitted.tif"
[37] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_037_NDVI_FinalFitted.tif"
[38] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_038_NDVI_FinalFitted.tif"
[39] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_039_NDVI_FinalFitted.tif"
[40] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_040_NDVI_FinalFitted.tif"
[41] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_041_NDVI_FinalFitted.tif"
[42] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_042_NDVI_FinalFitted.tif"
[43] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_043_NDVI_FinalFitted.tif"
[44] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_044_NDVI_FinalFitted.tif"
[45] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_045_NDVI_FinalFitted.tif"
[46] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_046_NDVI_FinalFitted.tif"
[47] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_047_NDVI_FinalFitted.tif"
[48] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_048_NDVI_FinalFitted.tif"
[49] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_049_NDVI_FinalFitted.tif"
[50] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_050_NDVI_FinalFitted.tif"
[51] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_051_NDVI_FinalFitted.tif"
[52] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_052_NDVI_FinalFitted.tif"
[53] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_053_NDVI_FinalFitted.tif"
[54] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_054_NDVI_FinalFitted.tif"
[55] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_055_NDVI_FinalFitted.tif"
[56] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_056_NDVI_FinalFitted.tif"
[57] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_057_NDVI_FinalFitted.tif"
[58] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_058_NDVI_FinalFitted.tif"
[59] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_059_NDVI_FinalFitted.tif"
[60] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_060_NDVI_FinalFitted.tif"
[61] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_061_NDVI_FinalFitted.tif"
[62] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_062_NDVI_FinalFitted.tif"
[63] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_063_NDVI_FinalFitted.tif"
[64] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_064_NDVI_FinalFitted.tif"
[65] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_065_NDVI_FinalFitted.tif"
[66] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_066_NDVI_FinalFitted.tif"
[67] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_067_NDVI_FinalFitted.tif"
[68] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_068_NDVI_FinalFitted.tif"
[69] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_069_NDVI_FinalFitted.tif"
[70] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_070_NDVI_FinalFitted.tif"
[71] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_071_NDVI_FinalFitted.tif"
[72] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_072_NDVI_FinalFitted.tif"
[73] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_073_NDVI_FinalFitted.tif"
[74] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_074_NDVI_FinalFitted.tif"
[75] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_075_NDVI_FinalFitted.tif"
[76] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_076_NDVI_FinalFitted.tif"
[77] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_077_NDVI_FinalFitted.tif"
[78] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_078_NDVI_FinalFitted.tif"
[79] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_079_NDVI_FinalFitted.tif"
[80] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_080_NDVI_FinalFitted.tif"
[81] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_081_NDVI_FinalFitted.tif"
[82] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_082_NDVI_FinalFitted.tif"
[83] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_083_NDVI_FinalFitted.tif"
[84] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_084_NDVI_FinalFitted.tif"
[85] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_085_NDVI_FinalFitted.tif"
[86] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_086_NDVI_FinalFitted.tif"
[87] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_087_NDVI_FinalFitted.tif"
[88] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_088_NDVI_FinalFitted.tif"
[89] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_089_NDVI_FinalFitted.tif"
[90] "raw_data/MODIS_TERRA/NDVI_FinalFitted/MOD09Q1_2013_090_NDVI_FinalFitted.tif"

在以下代码中:我试图只在前31天对列表进行子集设置并堆叠光栅,但代码似乎需要一段时间才能加载,我不确定我是否正确。有人能验证下面的代码在做什么吗?如果不是,如何仅获取rastlist中要堆叠的前31个文件?

library(raster)
allrasters <- stack(rastlist)                       
#get the date from the names of the layers and extract the month
indices <- format(as.Date(names(allrasters), format = "MOD09Q1_%Y_%j"), format = "%j")
indices <- as.numeric(indices)
#sum layers
Jan_NDVI<- stackApply(allrasters, indices[1:31] ,fun = mean)

我们可以提取year的第二天(假设只有一年(,将光栅列表转换为numeric类、order,并获得有序向量的前31个元素

rastlist[order(as.integer(sub(".*_\d{4}_(\d{3})_.*", "\1", rastlist)))[1:31]

如果超过一年,则提取日期部分,转换为Dateorder,并将有序的"光栅列表"子集

rastlist[order(as.Date(sub(".*_(\d{4}_\d{3})_.*", "\1", 
rastlist), "%Y_%j"))][1:31]

最新更新