knitr改变我的反向赋值运算符 - >到< -

时间:2013-10-31 19:58:43

标签: r knitr

在knitr .Rnw文件中使用“反向”赋值运算符( - >)时遇到问题。例如,我有以下简单的.Rnw文件

\documentclass{article}
\begin{document}
<<test>>=
    options(tidy=FALSE, width=50)
    1:5 -> a
@
\end{document} 

当我使用knitr编译成pdf时,运算符 - &gt;已经反转,所以输出实际上已经

1:5 <- a 

在里面!

我该如何更改?

2 个答案:

答案 0 :(得分:4)

使tidy=FALSE成为knitr chunk选项而不是R选项:

\documentclass{article}
\begin{document}
<<test,tidy=FALSE>>=
    options(tidy=FALSE, width=50)
    1:5 -> a
@
\end{document} 

(我不认为tidy=FALSEoptions()中做任何事情,但我认为这是无害的......)

enter image description here

答案 1 :(得分:3)

为了逐块设置tidy=FALSE,Ben的回答让你了解。

要全局重置选项,请使用opts_chunk$set(),如下所示:

\documentclass{article}
\begin{document}

<<setup, include=FALSE, cache=FALSE>>=
opts_chunk$set(tidy=FALSE)
@

<<test>>=
1:5 -> a
@

\end{document}

此外,as documented heretidy.opts可以让您对 knitr (以及最终formatR::tidy.source())的许多方面进行更精细的控制。行为。也许不幸的是,在这种情况下,当你可以告诉 knitr 不要用"="替换"<-"时(做opts_chunk$set(tidy.opts=list(replace.assign=FALSE))你不能使用该选项可控制"->"是否替换为"<-"

以下是使用tidy.opts

的示例
\documentclass{article}
\begin{document}

<<setup, include=FALSE, cache=FALSE>>=
opts_chunk$set(tidy.opts=list(replace.assign=FALSE))
@

<<test>>=
j <- function(x) {  x<-y ## x<-y will be printed on new line, with added inter-token spaces
a = 1:5                  ## will be indented, but "=" won't be replaced

                       } ## closing brace will be moved to start of line
@

\end{document}