2017-02-13 50 views
0

我想在R中创建一个字符串,然后我可以使用它来调用SQL存储过程。如何在R中保留撇号的字符串?

Websites <- paste('UK,','DE,','CA,', 'US', sep = " ") 
print(Websites) 

[1] "UK, DE, CA, US" 

如何改变这种为输出:

"'UK', 'DE', 'CA', 'US"? 

回答

3

我们可以使用gsub

gsub("\\b(\\w+)\\b", "'\\1'", Websites) 
#[1] "'UK', 'DE', 'CA', 'US'" 

或者另一种选择是

paste(sQuote(c('UK','DE','CA', 'US')), collapse=" ") 
+2

不熟悉sQuote。我有'paste0'(''“,c('UK,','DE','CA','US,'),”'“,collapse =”“)',我猜这是相当的 – dww

+1

只有一个'sQuote'上的细节,它会使用花哨的引号而不是''''''''除非你设置了正确的选项'options(useFancyQuotes = FALSE)',这在过去引起了我的一些悲伤 – Chrisss

0

你可以简单地做

library(magrittr) 
Websites<-"UK, DE, CA, US" %>% gsub("(\\w+)", "'\\1'", .) 
print(Websites) 
#[1] "'UK', 'DE', 'CA', 'US'" 
+4

为什么复杂这个简单通过使用'magrittr'和一个管道来回答它? – Gregor

+0

它暴露了输入,提高了可读性,这使得它更容易修改。对我来说,可读性是关于magrittr的最好的事情,尽管它在一些代码中给出的头痛以及命名操作(blergh!) – RBA

+0

可读性是关于'magrittr'的*唯一*的事情 - 在多重嵌套函数调用的情况下,我认为管道是一个巨大的改进,但是对于单个函数调用,我发现管道读取性很差。对于基本的SO Q&A,不需要加载'%>%'的任何软件包,单个管道可能会c对之前没有见过的新用户进行过滤。我没有降低评分,但我确实认为这会让你的答案难以接近,因此质量下降。 – Gregor

相关问题