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

Avoid R function paste generating backslash for quotes

我正在尝试将两个包含引号 ("") 的字符串合并为一个 character/string 向量或使用 R 函数粘贴,以便我可以将结果插入 [=13= 中 writeFormula 的参数 x ] 包裹。

一个例子是这样的

paste('HYPERLINK("file)',':///"&path!$C&TRIM(MID(CELL("filename",B',sep="")

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

HYPERLINK("file:///"&path!$C&TRIM(MID(CELL("filename",B

但它实际上产生的结果是在 ":

前面加了一个反斜杠
[1] "HYPERLINK(\"file):///\"&path!$C&TRIM(MID(CELL(\"filename\",B"

我搜索了许多可能的解决方案,例如用 cat 或 替换粘贴,但输出不是字符向量。 toString 或 as.character 等函数可以将这些结果转换为字符串,但反斜杠也会返回。

非常感谢对此的任何帮助。谢谢。

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

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

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

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

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

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

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

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

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 

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

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

nchar(p2)
## [1] 1