1

以前max(list.files(path, "my_files_v"))は最新の my_files_v バージョンを読み込んでいました。

ディレクトリには次のファイルがありました。

my_files_v1、my_files_v2、... my_files_v9

バージョン _v10 になるまで、スクリプトは常に最高のバージョンの my_file_v を読み込むので、私のコードは完全に正常に動作するように見えました。その時点以降、 max(list.files(..)) は常に _v9 を最大値として検出したため、_v10 と _v11 などをスキップしました。

1つの解決策は、substrなどを使用して文字列からバージョン番号を抽出することですが、それを行うより良い方法はありますか? そうでない場合、文字列からそのパターンを抽出する方法を知っている人はいますか?

4

1 に答える 1

1

あなたが使用することができます:

max(as.integer(gsub('my_files_v', '', list.files(path, "my_files_v")))

あなたのファイルにあなたが示したような拡張子がないと仮定します。ただし、ファイル ブラウザーで適切に並べ替えるために、通常はファイルにゼロ パディングを付けて名前を付けます。Rでは、次の方法でそれを行うことができますsprintf:

sprintf('%03d', 1:10)

ファイル名の数字部分を抽出するには、正規表現とグループ化を使用できます。

gsub('my_files_v([0-9]+)\\.Rdata', '\\1', list.files(path, 'my_files_v'))
于 2013-01-18T16:38:43.837 に答える