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

May*_*sal 3 r knitr

我现在正在努力knitr,我试图打印的字符串之一有%符号.我读了TeX手册,打印出%符号.TeX应该有字符串\%来显示代码.

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

try = "0% success"
try2 = gsub("%","\%",try,fixed = TRUE)
Run Code Online (Sandbox Code Playgroud)

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

如果我这样做:

try = "0% success
try2 = gsub("%","\\\\%",try,fixed = TRUE)
Run Code Online (Sandbox Code Playgroud)

knitr 仍然无法打印字符串

请建议我解决问题的方法

- - - - 编辑 - - - - - - - - -

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

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

我对knitr或LaTeX都不是很好

LPH*_*LPH 7

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

> try2 = gsub("%","\\%",try,fixed = TRUE)
> try2
[1] "0\\% success"
Run Code Online (Sandbox Code Playgroud)

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

我希望我理解你 - 这对你来说是可能的耻辱!


Max*_*m.K 5

您需要两个反斜杠来转义:

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

Some text in LaTex \Sexpr{try}. 
Run Code Online (Sandbox Code Playgroud)

编写完文档后,得到以下 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}
Run Code Online (Sandbox Code Playgroud)

当然,这是假设的echo=TRUE

  • 这仍然会导致问题吗?您可以看到它被编织为“\textbackslash{}\textbackslash{}%”,而不是所需的“\%” (2认同)