Как сделать gsub('%', '\%' в R?

Я хочу экспортировать латексную таблицу со столбцом единиц измерения, имеющим символ процента (%).

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

примечание: приведенный выше код был изменен с момента ответа Йориса.

В этом случае «%» интерпретируется LaTeX как комментарий.

я пытался

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

возвращается

[1] "1"

как я могу преобразовать% в \%, чтобы LaTex прокомментировал это?

Этот вопрос немного похож на предыдущий вопрос "can R paste('\')?"; даже полировку той же таблицы, но не могу разобраться в этом конкретном случае.


person David LeBauer    schedule 17.02.2011    source источник
comment
Моя версия R (2.10.1 с xtable 1.5-6), по-видимому, правильно экранирует % в выводе.   -  person NPE    schedule 17.02.2011
comment
То же самое для меня с версией R 2.12.1 xtable 1.5-6   -  person Sacha Epskamp    schedule 17.02.2011


Ответы (2)


Комбинируя ответ Джориса с кодами в комментарии:

library(xtable)
foo <- data.frame(units='%', citation = '\\citep{authorYYYYabc}')
print(xtable(foo), sanitize.text.function = function(x)gsub('%', '\\\\%', x))
person Sacha Epskamp    schedule 17.02.2011
comment
Примечание stresc в пакете seqinr. - person G. Grothendieck; 18.02.2011

Я не уверен, что понял вас полностью правильно. Если я делаю xtable(foo), то % правильно экранируется:

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

Если вы хотите сделать косую черту для чего-то другого, вам понадобится четверная косая черта в gsub :

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

Имейте в виду, вы не можете использовать gsub в кадре данных, только в векторе. Это можно показать с помощью

> as.character(foo)
[1] "1"
person Joris Meys    schedule 17.02.2011
comment
извините, я сделал ошибку в своем исходном вопросе, должен ли я задать его еще раз или внести исправления выше - я использую print(xtable(foo), sanitize.text.function function(x) {x}) для правильного преобразования цитат в фрейме данных: foo <- data.frame(units='%', citation = '\\citep{authorYYYYabc}') - person David LeBauer; 17.02.2011
comment
Приношу извинения за изменение вопроса, а затем выбор ответа на мой измененный вопрос. Я ценю помощь. - person David LeBauer; 17.02.2011
comment
@ Дэвид: нет проблем. Но вы должны были сами найти ответ Саши. Прочтите также ?grep и ?regex, чтобы узнать о регулярных выражениях в R. Вы не пожалеете. - person Joris Meys; 18.02.2011