尝试使用str_replace替换R中的字符串中的()

时间:2016-11-25 14:52:02

标签: r regex

我正在尝试使用R中的()函数替换字符串中的sub_string,但似乎是因为该函数忽略了()。我对编码和R很陌生,所以我想它与()的正则表达式有关。

我只是不知道如何让代码识别我希望它将()视为常规字符

示例字符串:

tBodyAcc-mean()-X

这是我正在使用的功能:

mutate(feature,feature=str_replace(feature$feature,(),""))

感谢帮助

2 个答案:

答案 0 :(得分:0)

Sub,gsub

\\识别特殊字符

如果你想只替换字符串中间的括号(不在开头或结尾):

text <- "tBodyAcc-mean()-X"
sub("#\\(\\)#", "", text)
[1] "tBodyAcc-mean-X"

text <- "tBodyAcc-mean-X()"
sub("#\\(\\)#", "", text)
[1] "tBodyAcc-mean-X()"

如果要替换任何括号(包括字符串末尾和开头的那些括号)

text <- "tBodyAcc-mean()-X"
sub("\\(\\)", "", text)

编辑,正如使用gsub代替sub的几条评论中所指出的那样,将替换字符串中的所有“()”,而仅sub替换第一个“()”

text <- "t()BodyAcc-mean()-X"

sub("\\(\\)", "", text)
[1] "tBodyAcc-mean()-X"

> gsub("\\(\\)", "", text)
[1] "tBodyAcc-mean-X"

答案 1 :(得分:0)

您可以使用gsub做得更好。它将取代所有事件。

# First argument is the pattern to find. Instead of () you specify \\(\\) because is a regular expression and you want the literal ()
# Second argument is the string to replace
# Third argument is the string in which the replacement takes place
gsub("\\(\\)", "REPLACE", "tBodyAcc-mean()-X")

<强>输出:

[1] "tBodyAcc-meanREPLACE-X"