从字符串中删除转义符,或者"我怎样才能将\"移开?"

Dav*_*uer 10 string r escaping

逃生字符在R中造成很多麻烦,前面的问题证明了这一点:

  1. 更改列中的值
  2. 可以R paste()输出"\"吗?
  3. 用R中的双引号替换转义的双引号
  4. 如何gsub('%','\%',...在R?

以前的许多问题都可以简化为"我怎样才能得到我的方式?"的特殊情况.

有一个简单的方法吗?

例如,我找不到任何参数gsub将删除以下所有转义:

 test <- c('\01', '\\001')
Run Code Online (Sandbox Code Playgroud)

Jos*_*ien 8

这里的困难在于"\1",虽然它印有两个字形,但实际上,在R视图中是单个字符.事实上,它"\001""\01"以下人物完全相同:

nchar("\1")
# [1] 1
nchar("\001")
# [1] 1
identical("\1", "\001")
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)

因此,您通常可以使用以下内容删除所有反斜杠:

(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"
Run Code Online (Sandbox Code Playgroud)

但是,正如你所看到的,"\1","\01",和\001"都将呈现为001,(因为与R他们是所有只是叫法不同"\001").


编辑:有关"\"转义序列的使用以及可以用它们表示的各种各样的字符的更多信息(包括Joshua Ulrich在上面的评论中提到的不允许的字符串),请参阅R语言定义的这一部分.