逃避角色在R中造成很多麻烦,正如之前的问题所证明的那样:
以前的许多问题都可以简化为“我怎样才能得到我的方式?”的特殊情况。
有一种简单的方法吗?
例如,我找不到gsub
的参数,这些参数将从以下内容中删除所有转义:
test <- c('\01', '\\001')
答案 0 :(得分:8)
这里的难点在于"\1"
虽然印有两个字形,但实际上,在R视图中是一个字符。事实上,它与"\001"
和"\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提到的不允许的字符串)在上面的评论中),请参阅R语言定义的this section。
答案 1 :(得分:1)
我刚遇到同样的问题 - 如果你想要任何\ x,其中x是一个字符,那么我不知道如何,我希望我知道,但是要为特定的转义序列修复它。说\ n那么你可以做到
new = gsub("\n","",old,fixed=T)
在我的情况下,我只有\ n