1

完全に困惑しましたが、重複としてすぐに投票される単純な質問のように見えますが、答えを検索するための正しい「パターン」を見つけることができませんでした.

デュアルパターンに一致するフォルダー内のファイルを探しており、それらを R で開きたいと考えています。したがって、list.files次のように生成されると仮定します。

lf <- c("foo_23_bar.txt", "goo_42_mar.txt", "boo_42_bar.txt")

コマンドラインではls foo*bar、最初のファイルを見つけるために使用しますが、R では、

grep(paste("foo","bar",sep="|"),lf)

ファイル 1 と 3 の両方を返しperl=TRUEます。オプションの使用方法がわかりません。どんな助けでも素晴らしいでしょう。ありがとう!

4

3 に答える 3

4

glob2rx対応する正規表現を取得するために使用します

> glob2rx("foo*bar*")
[1] "^foo.*bar"

> grep(glob2rx("foo*bar*"), lf, value=TRUE)
[1] "foo_23_bar.txt"
于 2013-05-09T16:00:16.493 に答える
0

うーん..有用な答えの1つが消えました。とにかく、これはまさに私が念頭に置いていたものであり、Martin と Michael (?) の回答を組み合わせたものです。

list.files(path="data/",pattern=glob2rx("*foo*bar*"))

または、Bingjun によって解決されたように:

lf <- system("ls data/*foo*bar*")

これには、ファイル名にパスを指定するという追加の利点があり、それらを R に直接読み込むのが簡単になります。

于 2013-05-09T16:34:56.817 に答える