2

異なるフォルダから、Rに複数の.txtファイルを読み込もうとしています。
正規表現を使用してパスとパターンを書くのに問題があります。

私のパスはこの構造になっています:

'/Users/folderA/folderB/folderC/folderD/01_01_2012/folderE/file.txt'

したがって、日付名のフォルダが常に変更されることを除いて、パスはほとんど同じです。
私はそれを次のようにロードしようとしました:

filesToProcess <- list.files(path = "/Users/folderA/folderB/folderC/folderD/", 
                             pattern = "*_*_*/folderE/*.txt")

しかし、これはうまくいかないようです。
誰かが正規表現でこれを書き留めるのを手伝ってくれませんか?

どうもありがとう!

4

2 に答える 2

1

ここで重要なのは、引数を使用recursive=TRUEして、元のディレクトリにあるフォルダ内を検索できるようにすることです。

filesToProcess <- list.files(path = "/Users/folderA/folderB/folderC/folderD", 
                      pattern = "txt", recursive = TRUE, full.names = TRUE)

パターンはファイルの名前に対応している必要があり、フォルダの名前を参照することはできません(を参照?list.files)。そのため、必要な特定のフォルダーに絞り込む必要がある2番目のステップが必要です。前の呼び出しで引数full.names=TRUEを使用して、各ファイルのパスを保持できることに注意してください(注:引数の最後を削除する必要があります。/そうpathしないと、出力で2倍になり、エラーが発生します。ファイルをアップロードしてみてください)。

filesToProcess[grep("folderE", filesToProcess)]

最後の注意:
あなたの正規表現はとにかく欠陥がありました:*意味

前の項目は0回以上一致します。

あなたが欲しかったのは.:参照?regexp

期間 。任意の1文字に一致します。

于 2012-12-16T09:46:57.233 に答える
0

件名は正規表現を参照していますが、例から、本当にグロブを使用したいようです。その場合は、次を試してください。

Sys.glob("/Users/folderA/folderB/folderC/folderD/*_*_*/folderE/*.txt")
于 2012-12-16T14:02:47.020 に答える