Search code examples
regexrescapinggsub

R gsub a single double quotation mark


I have a field of strings in a data frame all similar to:

"Young Adult – 8-9"" 

where the inner single " is what I want to replace with nothing to get:

"Young Adult - 8-9"

How can I do this? I tried to escape with a double backslash:

gsub("\\"", "", string)

but got this error: Error: unexpected string constant in "gsub("\\"", ""


Solution

  • You do not need to escape a double quote in a regular expression. Just use "\"" or '"' to match a single double quote.

    s = "Young Adult – 8-9\""
    s
    [1] "Young Adult – 8-9\""
    gsub("\"", "", s)
    [1] "Young Adult – 8-9"
    gsub('"', "", s)
    [1] "Young Adult – 8-9"
    

    See this IDEONE demo

    NOTE: Since you want to remove some literal text, you do not even need a regex, use fixed=TRUE argument to speed up the operation:

    gsub('"', "", s, fixed=TRUE)