Я не уверен, правильно ли я вас понимаю. Если я делаю xtable (foo), то% правильно экранируется:
...
\hline
1 & \% \\
\hline
...
Если вы хотите создать запасную косую черту для чего-то другого, вам нужен четверной слот в gsub:
> x <- gsub('%', '\\\\%', foo[,1])
> x
[1] "\\%"
> cat(x,"\n")
\%
Имейте в виду, вы не можете gsub в кадре данных, только в векторе. Это может быть показано
> as.character(foo)
[1] "1"