-1

我在一个目录中有几个 nc 文件。文件的命名很复杂,例如:

 LPRM-AMSR_E_L3_D_SOILM3_V002-20120601T214436Z_20100801.nc

我想列出文件以便我可以使用它们,似乎 R 按特定顺序列出了它们。

我如何告诉 R 更改 list.files 的默认显示,并仅根据 _yearmonthday为它们排序文件,这代表所有文件中的年月日

LPRM-AMSR_E_L3_D_SOILM3_V002-20120601T214436Z _20100801

要在 RI 中列出文件,请使用以下命令:

a<-list.files("D:\\semon", "*.nc", full.names = TRUE)

我明白了:

[1] "D:\\LPRM-AMSR_E_L3_D_SOILM3_V002-20120603T170757Z_20110916.nc"
[2] "D:\\/LPRM-AMSR_E_L3_D_SOILM3_V002-20120603T194524Z_20110917.nc"
[3] "D:\\/LPRM-AMSR_E_L3_D_SOILM3_V002-20120604T122649Z_20110915.nc"

我想得到这个:

[1] "D:\\/LPRM-AMSR_E_L3_D_SOILM3_V002-20120604T122649Z_20110915.nc"
[2] "D:\\/LPRM-AMSR_E_L3_D_SOILM3_V002-20120603T170757Z_20110916.nc"
[3] "D:\\/LPRM-AMSR_E_L3_D_SOILM3_V002-20120603T194524Z_20110917.nc"
4

2 回答 2

4
    a<-list.files("D:\\semon", "*_20100801.nc", full.names = TRUE)

你要这个 :

 a<-list.files("D:\\semon", "*_[0-9]{8}[.]nc", full.names = TRUE)

或匹配经典日期模式:

  a<-list.files("D:\\semon", "*_\\d{4}\\d{2}\\d{2}[.]nc", full.names = TRUE)

编辑

OP 正在寻求订购list.files

   a<-list.files("D:\\semon", "*.nc", full.names = TRUE)
   a[order(gsub('.*_(\\d{8})[.].*','\\1',a))]

例如:

a <- c('D:\\AMSER\\amser2010+2011/LPRM-AMSR_E_L3_D_SOILM3_V002-20120603T170757Z_20110916.nc',
        "D:\\AMSER\\amser2010+2011/LPRM-AMSR_E_L3_D_SOILM3_V002-20120603T194524Z_20110917.nc",
        "D:\\AMSER\\amser2010+2011/LPRM-AMSR_E_L3_D_SOILM3_V002-20120604T122649Z_20110915.nc")

a[order(gsub('.*_(\\d{8})[.].*','\\1',a))]

[1] "D:\\AMSER\\amser2010+2011/LPRM-AMSR_E_L3_D_SOILM3_V002-20120604T122649Z_20110915.nc"
[2] "D:\\AMSER\\amser2010+2011/LPRM-AMSR_E_L3_D_SOILM3_V002-20120603T170757Z_20110916.nc"
[3] "D:\\AMSER\\amser2010+2011/LPRM-AMSR_E_L3_D_SOILM3_V002-20120603T194524Z_20110917.nc"
于 2013-03-01T16:03:02.933 回答
2

列出文件名以八个数字加“.nc”结尾的所有文件:

a <- list.files("/path/to/your/files", "_[0-9]{8}\\.nc$", full.names = TRUE)

要仅获取有效日期,您必须稍微调整模式,但这没什么大不了的(如果您愿意,可以作为练习留下)。

于 2013-03-01T16:06:22.960 回答