我正在尝试使用R中的()
函数替换字符串中的sub_string
,但似乎是因为该函数忽略了()
。我对编码和R很陌生,所以我想它与()
的正则表达式有关。
我只是不知道如何让代码识别我希望它将()
视为常规字符
示例字符串:
tBodyAcc-mean()-X
这是我正在使用的功能:
mutate(feature,feature=str_replace(feature$feature,(),""))
感谢帮助
答案 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"