Как gsub ('%', '\%', ... в R? - PullRequest
       32

Как gsub ('%', '\%', ... в R?

2 голосов
/ 17 февраля 2011

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

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 ('\')?" ; даже полируя тот же стол, но я не могу понять этот конкретный случай.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Сочетание ответа Джориса с кодами в комментарии:

library(xtable)
foo <- data.frame(units='%', citation = '\\citep{authorYYYYabc}')
print(xtable(foo), sanitize.text.function = function(x)gsub('%', '\\\\%', x))
2 голосов
/ 17 февраля 2011

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

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

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

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

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

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