nan nan - 1 year ago 56
R Question

str_replace (package stringr) cannot replace brackets in r?

I have a string, say

fruit <- "()goodapple"


I want to remove the brackets in the string. I decide to use stringr package because it usually can handle this kind of issues. I use :

str_replace(fruit,"()","")


But nothing is replaced, and the following is replaced:

[1] "()good"


If I only want to replace the right half bracket, it works:

str_replace(fruit,")","")
[1] "(good"


However, the left half bracket does not work:

str_replace(fruit,"(","")


and the following error is shown:

Error in sub("(", "", "()good", fixed = FALSE, ignore.case = FALSE, perl = FALSE) :
invalid regular expression '(', reason 'Missing ')''


Anyone has ideas why this happens? How can I remove the "()" in the string, then?

Answer Source

Escaping the parentheses does it...

str_replace(fruit,"\\(\\)","")
# [1] "goodapple"

You may also want to consider exploring the "stringi" package, which has a similar approach to "stringr" but has more flexible functions. For instance, there is stri_replace_all_fixed, which would be useful here since your search string is a fixed pattern, not a regex pattern:

library(stringi)
stri_replace_all_fixed(fruit, "()", "")
# [1] "goodapple"

Of course, basic gsub handles this just fine too:

gsub("()", "", fruit, fixed=TRUE)
# [1] "goodapple"
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download