14

转义字符在 R 中会引起很多麻烦,前面的问题证明了这一点:

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

许多以前的问题可以简化为“我怎样才能摆脱我的方式?”的特殊情况。

有没有一种简单的方法可以做到这一点?

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

 test <- c('\01', '\\001')
4

2 回答 2

10

这里的困难在于"\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 语言定义的这一部分

于 2012-04-09T17:12:03.540 回答
2

我刚刚遇到了同样的问题 - 如果你想要任何 x 是字符的 \x ,那么我不知道如何,我希望我知道,但要针对特定​​的转义序列修复它。说 \n 然后你可以做

new = gsub("\n","",old,fixed=T)

就我而言,我只有 \n

于 2014-10-22T21:06:26.180 回答