2017-08-11 23 views
3

私は自分のデータフレームから「(」オープニングブラケットを含む行を削除したい 特殊文字を含む行を削除する方法は?

は、私は、次の試してみました:。

df[!grepl("(", df$Name),] 

しかし、これは(看板を追跡しません

+3

'('正規表現の一部としてではなく文字としてgrepの表現で理解されているオープン括弧をエスケープしてみてください。。 '\\('、これが機能するかどうかを確認あなたは見つけることができます詳細はこちら:https://stackoverflow.com/questions/27721008/how-do-i-deal-with-special-characters-like-in-my-regex – Deena

+0

?df [!grepl(\\(、 df $ Name)、] – nemja

答えて

6

あなたは\\(をダブルエスケープする必要があります。

x <- c("asdf", "asdf", "df", "(as") 

x[!grepl("\\(", x)] 
# [1] "asdf" "asdf" "df" 

ちょうど目を適用しますコメントで@CSquareによって指摘

x[!grepl("[[:punct:]]", x)] 

として、here is a great summary about special characters in R regex


追加入力:また、正規表現を使用して、すべてのpuctuation文字の削除について考えることができdf[!grepl("\\(", df$Name), ]

のようなあなたのDFにありますコメントから:
@Sotos:正規表現がバイパスされる可能性があるので、pattern='('fixed = TRUEでパフォーマンスが向上します。

x[!grepl('(', x, fixed = TRUE)] 
+2

私はその括弧をエスケープする代わりに 'fixed = TRUE'を使うことを提案します。つまり、より効率的になる(' x [!grepl( '('、x、fixed = TRUE)] 'それは正規表現エンジンをバイパスします。 – Sotos

+0

'grep("(x、fixed = TRUE、invert = TRUE、value = TRUE) ' – jogo

+0

ヒントをお寄せいただきありがとうございました。 – loki

関連する問題