用R字符串中的反斜杠 - 下划线“\ _”替换下划线“_”

时间:2016-10-31 23:19:52

标签: r regex stringr

问:如何在R字符串中用反斜杠 - 下划线“_”替换下划线“_”?我更喜欢使用stringr包。

此外,任何人都可以解释为什么下面的第5行无法获得所需的结果?我几乎肯定会这样做。

library(stringr)
s <- "foo_bar_baz"
str_replace_all(s, "_", 5) # [1] "foo5bar5baz"
str_replace_all(s, "_", "\_") # Error: '\_' is an unrecognized escape in character string starting ""\_"
str_replace_all(s, "_", "\\_") # [1] "foo_bar_baz"
str_replace_all(s, "_", "\\\_") # Error: '\_' is an unrecognized escape in character string starting ""\\\_"
str_replace_all(s, "_", "\\\\_") # [1] "foo\\_bar\\_baz"

上下文:我正在使用xtable创建一个LaTeX表,并且需要清理我的列名,因为它们都有下划线并且会破坏LaTeX。

1 个答案:

答案 0 :(得分:1)

这一切都容易得多。在fixed("_")的帮助下,将文字字符串替换为文字字符串,无需正则表达式。

> library(stringr)
> s <- "foo_bar_baz"
> str_replace_all(s, fixed("_"), "\\_")
[1] "foo\\_bar\\_baz"

如果您使用cat

> cat(str_replace_all(s, fixed("_"), "\\_"))
foo\_bar\_baz> 

您将看到结果中实际上有1个反斜杠。