【发布时间】:2017-09-06 05:25:24
【问题描述】:
我有一个数组:
t <- c("IMCR01","IMFA02","IMFA03")
我想让它看起来像这样:
"\'IMCR01\'","\'IMFA02\'","\'IMFA03\'"
我尝试了不同的方法,例如:
paste0("\'",t,"\'")
paste0("\\'",t,"\\'")
paste0("\\\\'",t,"\\\\'")
但没有一个是正确的。其他功能也可以。
【问题讨论】:
我有一个数组:
t <- c("IMCR01","IMFA02","IMFA03")
我想让它看起来像这样:
"\'IMCR01\'","\'IMFA02\'","\'IMFA03\'"
我尝试了不同的方法,例如:
paste0("\'",t,"\'")
paste0("\\'",t,"\\'")
paste0("\\\\'",t,"\\\\'")
但没有一个是正确的。其他功能也可以。
【问题讨论】:
其实你的第二次尝试是正确的:
paste0("\\'",t,"\\'")
如果您想告诉paste 使用文字反斜杠,您需要将其转义一次(但不是两次,因为您需要在正则表达式模式中)。这会将以下内容输出到 R 中的控制台:
[1] "\\'IMCR01\\'" "\\'IMFA02\\'" "\\'IMFA03\\'"
这里的诀窍是反斜杠甚至在控制台输出中被 R 转义。如果您将t 写入文本文件,您将只能看到一个反斜杠:
write(t, file = "/path/to/your/file.txt")
但是为什么 R 在写入自己的控制台时需要转义反斜杠呢?一种可能性是,如果要编写文字\n,那么控制台实际上会将其解释为换行符。因此仍然需要 eacaping。
【讨论】:
cat 是您检查“实际”字符串时的朋友:例如cat(paste0("\\'",t,"\\'"), "\n")。