R粘贴字符串折叠 - 如何用引号保留字符串?

Posted

技术标签:

【中文标题】R粘贴字符串折叠 - 如何用引号保留字符串?【英文标题】:R paste string with collapse - How to keep string with quotes? 【发布时间】:2015-05-13 04:54:56 【问题描述】:

我在将两个字符串粘贴在一起时遇到引号问题。

我想要这样的输出:query="sql query","port"

我试过了:

      query<-c("sql query","port")
      paste(queryString,collapse=",")

给出:“sql 查询,端口”

也试过这个:

        query<-c("sql query")
        query<-paste(query,"port",sep=",")

其中还给出:“sql 查询,端口”

如果在正确的位置没有引号,查询将无法运行。 我怎样才能保留它们?

【问题讨论】:

更新了一些基准 【参考方案1】:

试试这个:

queryq <- toString(shQuote(query))

给出:

cat(queryq, "\n")
## "sql query", "port" 

【讨论】:

【参考方案2】:

你也可以使用

toString(sprintf("'%s'", query))
#[1] "'sql query', 'port'"

基准测试

使用来自stringistri_rand_strings 创建了一些随机字符串

library(stringi)
n <- 1e6
set.seed(25)
query1 <-  stri_rand_strings(n, 6, '[A-Za-z]')

f1 <- function() toString(sprintf("'%s'", query1)) 
f2 <- function() toString(shQuote(query1))

library(microbenchmark)
microbenchmark(f1(), f2(), unit='relative', times=20L)
#Unit: relative
# expr      min       lq    mean   median      uq      max neval cld
#f1() 1.000000 1.000000 1.00000 1.000000 1.00000 1.000000    20  a 
#f2() 1.557221 1.488862 1.43024 1.443488 1.36958 1.362173    20   b

【讨论】:

以上是关于R粘贴字符串折叠 - 如何用引号保留字符串?的主要内容,如果未能解决你的问题,请参考以下文章

mysql反引号和引号的用法

R读取表格,将引号保留在字符串中

正则表达式

特殊符号作用

如何在 Oracle 中转义保留字?

如何解决 mysqlERROR 1064