如何gsub('%','\%',...在R?

时间:2011-02-17 16:57:21

标签: regex r gsub

我想导出一个带有百分号(%)符号的单位列的乳胶表。

library(xtable) 
foo <- data.frame(units='%', citation = '\\citep{authorYYYYabc}')
print(xtable(foo), sanitize.text.function = function(x) {x})

注意:自Joris回答以来,上面的代码已经改变。

在这种情况下,'%'被LaTeX解释为注释。

我试过了

gsub('%', '\\%', foo)

返回

[1] "1"

如何将%转换为\%以便LaTex将其注释掉?

这个问题有点像前一个问题“can R paste('\')?";甚至在同一张桌子上打磨,但我无法弄清楚这个特殊情况。

2 个答案:

答案 0 :(得分:2)

我不确定我是否完全理解你。如果我执行xtable(foo),则%被正确转义:

...
  \hline
1 & \% \\ 
   \hline
...

如果你想为其他东西做一个转义斜杠,你需要在gsub中使用四倍的转义:

> x <- gsub('%', '\\\\%', foo[,1])
> x
[1] "\\%"
> cat(x,"\n")
\% 

请注意,您不能只在数据框中使用gsub。这可以通过

显示
> as.character(foo)
[1] "1"

答案 1 :(得分:2)

将Joris的答案与评论中的代码结合起来:

library(xtable)
foo <- data.frame(units='%', citation = '\\citep{authorYYYYabc}')
print(xtable(foo), sanitize.text.function = function(x)gsub('%', '\\\\%', x))