2016-06-21 22 views
1

Rのlist.filesを使用して、このパターン "un [a digit]"(filename_un1.txt、filename_un2.txtなど)を含むファイルをリストしたいと思います。一般的なコード:R関数のlist.filesで正規表現を使用

list_files <- list.files(path="my_file_path", recursive = TRUE, pattern = "here I need help", full.names = TRUE) 

私は、パターン入力でun\dを入れて試してみましたが、動作しません。

+1

お試しください。パターン= "_un \\ d + \\。txt $" ' –

+0

詳しくは、バックスラッシュをエスケープする必要があります。 – Peyton

+1

または単に '' un \\ d + '' – Gopala

答えて

1
list_files <- list.files(path="my_file_path", recursive = TRUE, pattern = "un[0-9]", full.names = TRUE) 
2

Rでは、文字列でエスケープシーケンスを使用できます。しかし、正規表現エンジンは、速記文字クラス(数字のためのような\d)を渡すことや特殊文字をエスケープするリテラル\を必要とする(のような\\.リテラルのドットを一致させます。)

だから、あなたが必要

pattern = "_un\\d+\\.txt$" 

  • _unはどこ - リテラル部分文字列に一致する_un
  • \\d+は、 -
  • \\.+一つ以上数量詞のように)1以上の数字と一致する - リテラルドット
  • txtと一致する - 文字列の終わり - 文字txt
  • $のリテラルのシーケンスにマッチします。