1

1つのフォルダーに複数のファイルがあり、名前を変更したいのですが、Rがアルファベット順に読み取られることに気付いたので、コマンドを使用しmixedsortて機能しましたが、結果を確認すると、ファイルが数値ではなく異なる順序で読み取られていることがわかりました。 。最初のファイルの名前はDaily_NPP1.bin 最大ですDaily_NPP365.bin

         a<- list.files("C:\\New folder (6)", "*.bin", full.names = TRUE)
         k<- mixedsort(a)#### load package feild
          b <- sprintf("C:carbonflux\\Daily_Rh%d.bin", seq(k))
          file.rename(a, b)

Rに番号順に読み取るように強制するにはどうすればよいですか?

4

2 に答える 2

0

名前の変更だけが必要な場合は、並べ替えに関係なく、次のようにすることができます。

b <- sub("^.*?([0-9]+)\\.bin$", "C:\\\\carbonflux\\\\Daily_Rh\\1.bin", a)
file.rename(a, b)

最初の引数subはファイル名の最後にある番号を抽出し、2番目の引数はそれを新しいファイル名テンプレート(の位置\\1)に貼り付けます。\\\\バックスラッシュを適切にエスケープするには、すべてが必要です。

于 2012-09-10T09:18:14.130 に答える
0

ファイルの名前を変更せずにベクターを並べ替える方法は次のとおりです。

# Replication of data:
a <- sort(paste0("Daily_NPP",1:365,".bin"))

# Extract numbers and order:
a <- a[order(as.numeric(gsub("[^0-9]","",a)))]
于 2012-09-10T09:47:55.713 に答える