我正在尝试将两个包含引号的字符串("")组合为字符/字符串向量或R函数粘贴,以便我可以将结果插入{{{的writeFormula的参数x中3}}包。
一个例子是这样的
paste('HYPERLINK("file)',':///"&path!$C$1&TRIM(MID(CELL("filename",B',sep="")
我希望它能产生这样的结果
HYPERLINK("file:///"&path!$C$1&TRIM(MID(CELL("filename",B
但实际上它会在":
前面产生反斜杠[1] "HYPERLINK(\"file):///\"&path!$C$1&TRIM(MID(CELL(\"filename\",B"
我搜索了许多可能的解决方案,例如用cat或openxlsx替换粘贴,但输出不是字符向量。像toString或as.character这样的函数可以将这些结果转换为字符串,但反斜杠也会返回。
真的很感激任何帮助。谢谢。
答案 0 :(得分:6)
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
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
可以看到单个字符由这样的空格分隔,并且没有反斜杠:
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