向R中的字符串添加单个反斜杠(\)

时间:2013-12-27 12:22:35

标签: r knitr

我正在处理knitr,我尝试打印的字符串之一是%符号。我阅读了TeX手册,打印出%符号。 TeX应该将字符串设置为\%以显示代码。

使用命令gsub我尝试执行以下操作:

try = "0% success"
try2 = gsub("%","\%",try,fixed = TRUE)

gsub抛出无效的转义字符错误

如果我这样做:

try = "0% success
try2 = gsub("%","\\\\%",try,fixed = TRUE)

knitr仍然无法打印字符串

请建议我解决问题的方法

-------- EDIT ------------------

我希望try中的字符串显示在输出PDF中 我在knitr中使用它作为\ textit {\ Sexpr {try}} 创建tex文件时,它认为百分比之后的文本是注释。 我首先创建一个rnw文件,然后创建tex文件,然后使用texi2pdf获取pdf文件

----编辑2 -------------

我对knitr或LaTeX不太好。

2 个答案:

答案 0 :(得分:7)

你为什么要把一个“\”跳到4“\”?

> try2 = gsub("%","\\%",try,fixed = TRUE)
> try2
[1] "0\\% success"

这应该被理解为"\\",正如我所知,正则表达式将理解为“\”。

我希望我理解你 - 这对你来说可能是一种侮辱!

答案 1 :(得分:3)

你需要两个反斜杠才能逃脱:

<<>>=
try = "0\\% success"
@

Some text in LaTex \Sexpr{try}. 

编织文档后,获得以下LaTeX代码:

\begin{document}

\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe}
\begin{alltt}
\hlstd{try} \hlkwb{=} \hlstr{"0\textbackslash{}\textbackslash{}% success"}
\end{alltt}
\end{kframe}
\end{knitrout}

Some text 0\% success

\end{document}

这当然是假设echo=TRUE