2016-04-06 15 views
0

私は、Rスクリプトにフレーズを引数として読み込んでいます。フレーズにアスタリスク(*)が含まれている場合は、スクリプトを実行したくありません。Rでgreplを使用してアスタリスクを検索する

しかし、greplを使用しているときにアスタリスクを認識する際に問題が発生しています。たとえば:grepl(asterisk,phrase1)ため

> asterisk="*" 
> phrase1="hello" 
> phrase2="h*llo" 
> grepl(asterisk,phrase1) 
[1] TRUE 
> grepl(asterisk,phrase2) 
[1] TRUE 

結果はFALSEでなければなりません。フレーズにアスタリスクがあるかどうかを知るために、どのように私がgreplを得ることができるか知っていますか? *アスタリスクは、通常のexpresssionで特別な意味を持っているので、これは動作します

p <- c("Hello", "H*llo") 
grepl("\\*", p) 

[1] FALSE TRUE 

+2

ノートhttps://en.wikipedia.org/wiki/Asterixをエスケープの意味を持っているので、二重のエスケープが必要である –

+0

一部他の人は注意してください:http://stackoverflow.com/q/399078/ – Frank

答えて

3

はこれを試してみてください。具体的には、*は、前の要素のゼロ以上を見つけることを意味します。

したがって、\\*を使用してアスタリスクをエスケープする必要があります。 \はすでにhttps://en.wikipedia.org/wiki/Asterisk対R.に

+2

または 'grepl(" * "、p、fixed = TRUE)' –

+0

私はこのアプローチを推奨しますが、エスケープ文字は 'grepl(" * "、p、fixed = TRUE)' – brittenb

関連する問題