Add single quotes to a string
Asked Answered
O

6

12

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

Olfactory answered 20/3, 2013 at 16:59 Comment(0)
D
10

Just use paste:

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

or the new variety

R> paste0("'", "ABC", "'")
[1] "'ABC'"
Devaluate answered 20/3, 2013 at 17:1 Comment(0)
P
25

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'"
Poi answered 20/3, 2013 at 17:8 Comment(4)
Wow, my default option was to use fancyQuotes on OS X and i ended up with weird quotes... :)Savanna
So cool! R has the be amongst the coolest languages out there if not THE coolest.Pint
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 errorWaterside
@Waterside -- You can get the plain quotes you want by first setting options(useFancyQuotes = FALSE). (See ?sQuote for some additional options.)Periosteum
D
10

Just use paste:

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

or the new variety

R> paste0("'", "ABC", "'")
[1] "'ABC'"
Devaluate answered 20/3, 2013 at 17:1 Comment(0)
E
1

Extending @vodka answer:

s <- c("cat", "dog")
a <- "'"
mapply(paste0, a, s, a)
Exocarp answered 20/3, 2013 at 17:6 Comment(0)
M
1

Using Reduce and paste0

Reduce(paste0,list("'","a","'"))
 [1] "'a'"
Malvern answered 20/3, 2013 at 17:12 Comment(0)
E
0

Maybe I'm missing something:

s <- "cat"
a <- "'"
paste(a,s,a,sep="")
Expansionism answered 20/3, 2013 at 17:2 Comment(1)
Thx. I used collapse instead of sep.Olfactory
D
0

With sprintf():

x <- c("paste", "cat", "print")

sprintf("'%s'", x)
# [1] "'paste'" "'cat'"   "'print'"
Disarticulate answered 4/9, 2023 at 15:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.