R gsub a single double quotation mark

24,096

Solution 1

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)

Solution 2

When you save a gsub with “” in a .R script file, “” is saved as ".

gsub("[“”]", "", s) # Doesn't work when you save this piece of code in a script

The get-around solution is normalizing the double quotation marks first

x <- proustr::pr_normalize_punc(your_data_frame, your_column_name) %>%
     mutate(your_column_name = gsub('\"','', your_column_name))

You can guess that proustr::pr_normalize_punc converts all “” to \"

Share:
24,096
Oliver Oliver
Author by

Oliver Oliver

Updated on July 09, 2022

Comments

  • Oliver Oliver
    Oliver Oliver almost 2 years

    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("\"", ""