.Rtex 或 .Rnw 为扩展名保存,否则代码将无法运行。我们来看一个示例:

knitr 示例
如你所见,字符 <<>>= 和 @ 之间的文本就是 R 代码。这段代码及其输出会以类似代码清单的格式打印出来。这段代码块还可以接受一些额外参数来自定义动态输出,详见下一节。
代码块
上一节中展示的这种代码块通常称为 chunk。你可以在 knitr 代码块中设置一些额外选项。请看下面的示例:
knitr 示例
在 << 和 >> 之间传入了两个额外选项。
-
echo=FALSE:隐藏代码,只打印 R 生成的输出。 -
cache=TRUE:如果将 cache 设置为 true,则不会运行该代码块,只使用其生成的对象。如果该代码块中的数据没有变化,这可以节省时间。注意,Overleaf 目前不支持 cache=TRUE 选项,但它在本地应该可以正常工作。
行内命令
可以访问代码块中生成的对象,并将其以行内方式打印出来。
knitr 示例
命令 \Sexpr{mean(X)} 会打印 R 代码 mean(X) 返回的输出。花括号内可以传入任意 R 命令。
图表
也可以在 knitr 文档中添加图表,如下例所示:
knitr 示例
这个直方图使用存储在当前工作目录下 “data.txt” 中的数据。代码块中传入了几个与图形相关的选项。
plot1:用于引用该图的标签。前缀 “fig:” 是必需的。在示例中可以看到,该图通过 \ref{fig:plot1} 进行引用。fig.pos="t":定位参数,与 figure 环境中使用的相同。fig.height=4, fig.width=4:图形的宽度和高度。fig.cap="First plot":图形的标题。
外部 R 脚本
你可以将外部 R 脚本的部分内容导入到 knitr 文档中。这非常有用,因为通常会先在外部程序中编写和调试脚本,然后再将其包含到文档中。 假设我们在名为mycode.R 的文件中有以下 R 代码,并将其包含到 LaTeX 文档中:

read_chunk("mycode.R") 导入脚本。这就是设置 echo=FALSE 选项的原因。此外,脚本不能被缓存。导入脚本后,你可以使用在 ## ---- 之后设置的标签来打印某个代码块。在本例中为 myrcode2。
我们已将本文中的所有代码片段放入一个项目中,你可以在 Overleaf 上打开它。
参考指南
一些代码块选项:results:更改 R 代码所生成结果的行为。可能的取值有:markup:使用 LaTeX 格式化输出。asis:打印 R 的原始结果。hold:暂存输出结果,并将其推到代码块末尾。hide:隐藏结果。
echo:是否包含 R 源代码。其他参数包括:echo=2:3只打印第二行和第三行;echo=-2:-3仅排除第二行和第三行。
cache:是否缓存代码块。可能的取值为:TRUE和FALSEhighlight:是否高亮源代码。可能的取值为:TRUE和FALSEbackground:代码块的背景颜色。可以使用 rgb 和 HTML 格式。默认值为 “#F7F7F7”。

