转义字符在 R 中会引起很多麻烦,前面的问题证明了这一点:
许多以前的问题可以简化为“我怎样才能摆脱我的方式?”的特殊情况。
有没有一种简单的方法可以做到这一点?
例如,我找不到任何参数gsub
将删除以下所有转义:
test <- c('\01', '\\001')
转义字符在 R 中会引起很多麻烦,前面的问题证明了这一点:
许多以前的问题可以简化为“我怎样才能摆脱我的方式?”的特殊情况。
有没有一种简单的方法可以做到这一点?
例如,我找不到任何参数gsub
将删除以下所有转义:
test <- c('\01', '\\001')
这里的困难在于"\1"
,尽管它打印了两个字形,但在 R 看来,它实际上是一个字符。事实上,它"\001"
和 and是同一个字符"\01"
:
nchar("\1")
# [1] 1
nchar("\001")
# [1] 1
identical("\1", "\001")
# [1] TRUE
因此,您通常可以使用以下方式删除所有反斜杠:
(test <- c("\\hi\\", "\n", "\t", "\\1", "\1", "\01", "\001"))
# [1] "\\hi\\" "\n" "\t" "\\1" "\001" "\001" "\001"
eval(parse(text=gsub("\\", "", deparse(test), fixed=TRUE)))
# [1] "hi" "n" "t" "1" "001" "001" "001"
但是,如您所见,"\1"
,"\01"
和\001"
都将呈现为001
, (因为对于 R 它们都是 的不同名称"\001"
)。
编辑:有关"\"
在转义序列中使用的更多信息,以及可以使用它们表示的各种字符(包括 Joshua Ulrich 在上面的评论中提到的不允许的 nul 字符串),请参阅R 语言定义的这一部分。
我刚刚遇到了同样的问题 - 如果你想要任何 x 是字符的 \x ,那么我不知道如何,我希望我知道,但要针对特定的转义序列修复它。说 \n 然后你可以做
new = gsub("\n","",old,fixed=T)
就我而言,我只有 \n