我希望删除数据框中包含开括号“(”的行。
我尝试了以下操作:
但是这并没有追踪到
我尝试了以下操作:
df[!grepl("(", df$Name),]
但是这并没有追踪到
(
符号。\\
来双重转义 (
。x <- c("asdf", "asdf", "df", "(as")
x[!grepl("\\(", x)]
# [1] "asdf" "asdf" "df"
只需像这样将其应用于您的df:df[!grepl("\\(", df$Name), ]
您还可以考虑使用正则表达式删除所有标点符号:
x[!grepl("[[:punct:]]", x)]
正如评论中@CSquare所指出的那样,这里有一个关于R regex特殊字符的很好的总结
来自评论的额外输入:
@Sotos: 使用pattern='('
和fixed = TRUE
可以提高性能,因为正则表达式可以被绕过。
x[!grepl('(', x, fixed = TRUE)]
fixed = TRUE
而不是转义括号,即(x[!grepl('(', x, fixed = TRUE)]
),因为它可以绕过正则表达式引擎,更加高效。 - Sotosgrep("(", x, fixed=TRUE, invert=TRUE, value=TRUE)
- jogo
(
在 grep 表达式中被视为正则表达式的一部分而不是一个字符。尝试转义开括号,使用\\(
然后看看是否可以解决问题。你可以在这里找到更多详细信息:https://dev59.com/k14c5IYBdhLWcg3wnrf9 - Deena