11

I try to add single quotes to a string but don't see how to do it. For instance I would like to replace ABC by 'ABC'.

I have played with paste, cat, print but don't see how to do it.

Any solution?

Thanks, Vincent

Henrik
  • 65,555
  • 14
  • 143
  • 159
VincentH
  • 1,009
  • 4
  • 13
  • 24

5 Answers5

24

Maybe use sQuote?

sQuote("ABC")
# [1] "'ABC'"

This (like its sibling dQuote) is frequently used to put quotes around some message or other text that's being printed to the console:

cat("ABC", "\n")
# ABC 
cat(sQuote("ABC"), "\n")
# 'ABC' 

Do note (as is documented in ?sQuote) that, depending on the type of quotes needed for your task, you may need to first reset options("useFancyQuotes"). To ensure that the function decorates your text with simple upright ASCII quotes, for example, do the following:

options(useFancyQuotes = FALSE)
sQuote("ABC")
# [1] "'ABC'"
Josh O'Brien
  • 159,210
  • 26
  • 366
  • 455
  • Wow, my default option was to use fancyQuotes on OS X and i ended up with weird quotes... :) – Matt Bannert Feb 04 '15 at 17:47
  • 1
    So cool! R has the be amongst the coolest languages out there if not THE coolest. – krthkskmr Aug 15 '16 at 19:11
  • Problem with sQuote it seems is it uses a different character `‘abc’` . But what we would actually need would be `'abc'`. When run sql it sQuote gives error – sjd Jan 11 '19 at 09:06
  • @sjd -- You can get the plain quotes you want by first setting `options(useFancyQuotes = FALSE)`. (See `?sQuote` for some additional options.) – Josh O'Brien Jan 11 '19 at 15:02
10

Just use paste:

R> paste("'", "ABC", "'", sep="")
[1] "'ABC'"

or the new variety

R> paste0("'", "ABC", "'")
[1] "'ABC'"
csgillespie
  • 59,189
  • 14
  • 150
  • 185
1

Extending @vodka answer:

s <- c("cat", "dog")
a <- "'"
mapply(paste0, a, s, a)
Rcoster
  • 3,170
  • 2
  • 16
  • 35
1

Using Reduce and paste0

Reduce(paste0,list("'","a","'"))
 [1] "'a'"
agstudy
  • 119,832
  • 17
  • 199
  • 261
0

Maybe I'm missing something:

s <- "cat"
a <- "'"
paste(a,s,a,sep="")
vodka
  • 498
  • 2
  • 9