-1

ディレクトリにいくつかの nc ファイルがあります。ファイルの命名は複雑です。たとえば、次のようになります。

 LPRM-AMSR_E_L3_D_SOILM3_V002-20120601T214436Z_20100801.nc

ファイルを一覧表示して作業できるようにしたいのですが、R は特定の順序でファイルを一覧表示しているように見えました。

R に list.files のデフォルト表示を変更し、すべてのファイルで yearmonthday を表す _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

ファイル名が8つの数字と「.nc」で終わるすべてのファイルを一覧表示するには:

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

有効な日付のみを取得するには、パターンを少し調整する必要がありますが、大したことではありません(必要に応じて、演習として残しておきます)。

于 2013-03-01T16:06:22.960 に答える