2017-11-23 13 views
0

私はサブフォルダを持つ16個のフォルダのセットを持っています。これら16個のフォルダのそれぞれにコードを入れ、すべてのサブパスをチェックして、次の条件を満たすファイルのみをインポートします: "B02.jp2"または "B03.jp2"または "B04.jp2"複数の条件を持つファイルを一覧表示する

をこの1つは完全にはなく動作します: "OR『B08.jp2』

は、ここで私は

を選択したいファイルのスクリーンショットは、ここで私は、これまで使用していたコードです1つの条件(B08.jp2 $)のみを使用します

私は複数のパターンが、成功せずに組み合わせるしようとしている
path <- "my/path/" 
path <- list.files(path, recursive = TRUE, full.names = FALSE, pattern = "B08.jp2$") 

:に基づいてlist.files pattern argument in R, extended regular expression use

path <- "my/path/" 
path <- list.files(path, recursive = TRUE, full.names = FALSE, pattern = glob2rx("B08.jp2$*B03.jp2$")) 
path<-character(0) 

:ここに私の試みはあるに基づいて

R list files with multiple conditions

path <- "my/path/" 
path <- list.files(path, recursive = TRUE, full.names = FALSE, pattern = "B08.jp2$ | B03.jp2$") 
path<-character(0) 

- EDIT -

I ha私のデータを少し変更して、別の方法でインポートしたいと思っています。私のファイルは次のようになりました:

B02_10m.jp2 
B03_10m.jp2 
B04_10m.jp2 
B08_10m.jp2 

B05_20m.jp2 
B06_20m.jp2 
B07_20m.jp2 
B8A_20m.jp2 
B11_20m.jp2 
B12_20m.jp2 

これらは、それぞれ異なるサブフォルダにあります。それで私はrecursive=TRUEを使っています。

条件を組み合わせるのに次のオプションを試していますが、機能しません。

S2 <- "my/path" 
S2 <- list.files(S2, recursive = TRUE, full.names = TRUE, pattern = "B0[2348]_10m.jp2$ | B(0[567]_20m)|(1[12]_20m)|(8A_20m).jp2$") 

S2 <- "my/path" 
S2 <- list.files(S2, recursive = TRUE, full.names = TRUE, pattern = "B0[2348]_10m | B(0[567]_20m)|(1[12]_20m)|(8A_20m).jp2$") 

答えて

3

これを試してみてください:

list.files(path, recursive = TRUE, full.names = FALSE, 
      pattern = "B0[2348].jp2$") 

パターンは正規表現を受け付けます。

+0

私が試していたソリューションよりもはるかに簡単です。ありがとうたくさん – GCGM

+0

小さなコメント、もし私もB11、B12とB8Aで終わるファイルをインポートしたい。私は '' B0 [2348] .jp2 $ | B11.jp2 $ | B12.jp2 $ | B8A.jp2 $ "'を使用しようとしましたが、 – GCGM

+0

が働いていません。 '?grep 'から、条件を一致させる必要のあるパスを指定する必要があることがわかります。あれは正しいですか? – GCGM