如何删除具有特殊字符的行?

nem*_*mja 3 regex r dataframe grepl

我想从我的数据框中删除包含左括号"("的行.

我尝试了以下方法:

df[!grepl("(", df$Name),] 
Run Code Online (Sandbox Code Playgroud)

但这并没有追查(标志

lok*_*oki 6

你必须仔细逃脱(\\.

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

x[!grepl("\\(", x)]
# [1] "asdf" "asdf" "df"  
Run Code Online (Sandbox Code Playgroud)

只需将它应用于你的df就好 df[!grepl("\\(", df$Name), ]

您还可以考虑使用正则表达式删除所有标点字符:

x[!grepl("[[:punct:]]", x)]
Run Code Online (Sandbox Code Playgroud)

正如@CSquare在评论中所指出的,这里是关于R正则表达式中特殊字符的一个很好的总结


:从注释附加输入
@Sotos:以获得性能pattern='('fixed = TRUE自正则表达式可以被绕过.

x[!grepl('(', x, fixed = TRUE)]
Run Code Online (Sandbox Code Playgroud)

  • 我建议使用`fixed = TRUE`而不是转义那个括号,即(`x [!grepl('(',x,fixed = TRUE)]`)这会绕过正则表达式引擎更高效 (2认同)