避免R函数粘贴生成引号的反斜杠

Leo*_*eon 1 quotes r paste

我试图得到两个包含引号("")的字符串组合为字符/字符串向量或R函数粘贴,所以我可以将结果插入openxlsx包中writeFormula的参数x .

一个例子是这样的

paste('HYPERLINK("file)',':///"&path!$C$1&TRIM(MID(CELL("filename",B',sep="")
Run Code Online (Sandbox Code Playgroud)

我希望它能产生这样的结果

HYPERLINK("file:///"&path!$C$1&TRIM(MID(CELL("filename",B
Run Code Online (Sandbox Code Playgroud)

但它实际上产生的结果是在":"前面加一个反斜杠:

[1] "HYPERLINK(\"file):///\"&path!$C$1&TRIM(MID(CELL(\"filename\",B"
Run Code Online (Sandbox Code Playgroud)

我已经搜索了许多可能的解决方案,例如用cat替换paste或者在paste之前添加noquote函数,但输出不是字符向量.像toString或as.character这样的函数可以将这些结果转换为字符串,但反斜杠也会返回.

非常感谢任何帮助.谢谢.

G. *_*eck 9

没有反斜杠p.您看到的反斜杠就是R显示引号的方式(这样您就知道引号是字符串的一部分而不是结束分隔符)但不在字符串本身中.

p <- paste0('HYPERLINK("file)', ':///"&path!$C$1&TRIM(MID(CELL("filename",B')
p
## [1] "HYPERLINK(\"file):///\"&path!$C$1&TRIM(MID(CELL(\"filename\",B"

# no backslashes are found in p
grepl("\\", p, fixed = TRUE)
## [1] FALSE
Run Code Online (Sandbox Code Playgroud)

noquote(p),cat(p, "\n")或者writeLines(p)可以用于显示没有反斜杠转义的字符串:

noquote(p)
## [1] HYPERLINK("file):///"&path!$C$1&TRIM(MID(CELL("filename",B

cat(p, "\n")
## HYPERLINK("file):///"&path!$C$1&TRIM(MID(CELL("filename",B 

writeLines(p)
## HYPERLINK("file):///"&path!$C$1&TRIM(MID(CELL("filename",B
Run Code Online (Sandbox Code Playgroud)

可以看到单个字符由这样的空格分隔,并且没有反斜杠:

do.call(cat, c(strsplit(p, ""), "\n"))
## H Y P E R L I N K ( " f i l e ) : / / / " & p a t h ! $ C $ 1 & T R I M ( M I D ( C E L L ( " f i l e n a m e " , B 
Run Code Online (Sandbox Code Playgroud)

另一个例子是这里p2包含一个双引号并且其中包含一个字符,而不是2:

p2 <- '"'
p2
## [1] "\""

nchar(p2)
## [1] 1
Run Code Online (Sandbox Code Playgroud)