R粘贴字符串崩溃 - 如何保持字符串与引号?

Tin*_*naW 1 r paste collapse

将两个字符串粘贴在一起时,引号有问题.

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

我试过了:

      query<-c("sql query","port")
      paste(queryString,collapse=",")
Run Code Online (Sandbox Code Playgroud)

它给出:"sql查询,端口"

还试过这个:

        query<-c("sql query")
        query<-paste(query,"port",sep=",")
Run Code Online (Sandbox Code Playgroud)

这也给出:"sql查询,端口"

如果没有正确位置的引号,查询将不会运行.我怎么能保留它们?

G. *_*eck 5

试试这个:

queryq <- toString(shQuote(query))
Run Code Online (Sandbox Code Playgroud)

这使:

cat(queryq, "\n")
## "sql query", "port" 
Run Code Online (Sandbox Code Playgroud)


akr*_*run 5

你也可以使用

toString(sprintf("'%s'", query))
#[1] "'sql query', 'port'"
Run Code Online (Sandbox Code Playgroud)

基准测试

使用stri_rand_stringsfrom创建一些随机字符串stringi

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
Run Code Online (Sandbox Code Playgroud)