How to gsub('%', '\%', ... in R?
I want to export a latex table with a units column that has the percent (%) symbol.
library(xtable)
foo <- data.frame(units='%', citation = '\\citep{authorYYYYabc}')
print(xtable(foo), sanitize.text.function = function(x) {x})
note: above code has been changed since Joris' answer.
In this case, the '%' is interpreted as a comment by LaTeX.
I have tried
gsub('%', '\\%', foo)
returns
[1] "1"
how can I convert the % to \% so that LaTex comments it out?
This question is a little bit like a previous question "can R paste('\')?"; even po开发者_如何学编程lishing the same table, but I can't figure out this particular case.
Combining Joris' answer with the codes in the comment:
library(xtable)
foo <- data.frame(units='%', citation = '\\citep{authorYYYYabc}')
print(xtable(foo), sanitize.text.function = function(x)gsub('%', '\\\\%', x))
I'm not sure if I understand you completely correctly. If I do xtable(foo), then the % is correctly escaped :
...
\hline
1 & \% \\
\hline
...
If you want to make an escape slash for something else, you need a quadruple one in gsub :
> x <- gsub('%', '\\\\%', foo[,1])
> x
[1] "\\%"
> cat(x,"\n")
\%
Mind you, you cannot gsub in a dataframe, only in a vector. This can be shown by
> as.character(foo)
[1] "1"
精彩评论