在 knitr .Rnw 文件中使用“反向”赋值运算符 (->) 时遇到问题。例如,我有以下简单的 .Rnw 文件
\documentclass{article}
\begin{document}
<<test>>=
options(tidy=FALSE, width=50)
1:5 -> a
@
\end{document}
当我使用 knitr 编译成 pdf 时,运算符 -> 已反转,因此输出实际上有
1:5 <- a
在里面!
我怎样才能改变这个?
制作tidy=FALSE一个 knitr chunk 选项而不是 R 选项:
\documentclass{article}
\begin{document}
<<test,tidy=FALSE>>=
options(tidy=FALSE, width=50)
1:5 -> a
@
\end{document}
(我认为tidy=FALSE在 中根本没有做任何事情options(),但我想它是无害的......)

对于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}
此外,如此处所述,可以让您对knitr的(以及最终的)整理行为的tidy.opts许多方面进行更细粒度的控制。也许不幸的是,在这种情况下,虽然你可以告诉knitr不要替换为(这样做你不能使用该选项来控制是否被替换为.formatR::tidy.source()"=""<-"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}