2016-06-19 17 views
0

Rのdata.frameから "mean()"を持つフィールド名のリストを返そうとしています。grepが期待通りの結果を返さないR

grep("mean()", "fld_meanFreq()") 

それはすなわち1、私はフィールド名のリストに似た何かを0

とき、私は期待したときに、答えを返す:私は実行する場合は、例として、

私は "平均()"と "平均Freq()"の両方を含むフィールド名を取得しています。

どうすれば解決できますか?私はここでの検索でこれを扱ったものは見ませんでした。

+2

文字通り一致させる場合は、括弧をエスケープする必要があります。 'grep(" \\(\\) "、" fld_meanFreq() ")のようなものが動作するはずです。 – Psidom

+5

'grep'は* patterns *を見つけて、' regex'を使います。問題を紹介するには '?regex'を参照してください。 * exact *マッチが必要な場合は、 'grep(" mean() "、" fld_meanFreq() "、fixed = TRUE)の引数' fixed = TRUE'を追加する必要があります。 ' – nicola

+0

どうもありがとうございました。 – David

答えて

3

grepは、fixed=TRUEオプションを指定しないと、最初の引数が正規表現であることを前提としています。あなたの例では、代わりに

grep("mean", "fld_meanFreq()") 

とかなり同等であるので、あなたの例では、mean()中括弧は、部分式(この場合は空の1)を表し、試してみてください。

grep("mean()", "fld_meanFreq()", fixed=TRUE) 

の詳細について正規表現は、regexのRヘルプを読んでください。

関連する問題