0

私の質問は、次の質問に似ています: list.files() の表示順序を変更する方法: たとえば、ファイルの名前全体の一部に基づいて

しかし、私の場合は違います。提供されたソリューションを使用しました:

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

私の場合の命名はその質問で提供されたものとは異なるため、私の場合はうまくいきませんでした。

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

 file.img
 file.img

ファイルを一覧表示して作業できるようにしたいのですが、R は特定の順序でファイルを一覧表示しているように見えました。R は、データが正しく順序付けされていなくても、ファイルをアルファベット順に並べました。たとえば、次の 2 つのファイル名:

R に list.files のデフォルト表示を変更し 、すべてのファイルで yearmonthday を表す _yearmonthday のみに基づいてファイルを並べ替えるように指示するにはどうすればよいですか。

R でファイルを一覧表示するには、これを使用します。

私が使用した:

      mixsort 

しかし、私が望むようにそれらを注文しませんでした

4

1 に答える 1

5

関数のパターンを変更するだけでよいと思いますgsub。例えば:

xx <- 'SM_OP_20120330T000000_20120330T235959_245_001_7_ssture.img'
gsub('.*_(\\d{8}).*','\\1',xx)
"20120330"

したがって、全体のソリューションは次のとおりです。

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

編集例を追加:

   a <- list('SM_OP_20120330T000000_20120330T235959_245_001_7_ssture.img', ##2012-mars-30
          'SM_RE_20101130T000000_20110427T235959_245_001_7_ssture.img', ##2010-nov-30
          'SM_RE_20100901T000000_20090127T235959_245_001_7_ssture.img', ##2010-sep-01
          'SM_RE_20100904T000000_20090427T235959_245_001_7_ssture.img') ##2010-sep-04


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

[[1]]
[1] "SM_RE_20100901T000000_20090127T235959_245_001_7_ssture.img"

[[2]]
[1] "SM_RE_20100904T000000_20090427T235959_245_001_7_ssture.img"

[[3]]
[1] "SM_RE_20101130T000000_20110427T235959_245_001_7_ssture.img"

[[4]]
[1] "SM_OP_20120330T000000_20120330T235959_245_001_7_ssture.img"
于 2013-06-05T13:35:58.680 に答える