binaryR 代码(knitr)

Overleaf 提供了与 knitr的集成,允许你在 LaTeX 文档中添加 R 代码以生成动态输出。

包含 R 代码的文档必须以扩展名 .Rtex.Rnw保存,否则代码将无法运行。让我们看一个示例:

\documentclass{article}
\begin{document}

你可以在 \LaTeX{} 文档中输入 R 命令,这些命令将被处理并将其输出包含在文档中:

<<>>=
# 创建一个数列
X = 2:10

# 显示基本统计量
summary(X)

@
\end{document}
KnitrDemo1.png

在 Overleaf 上打开这个 knitr 示例arrow-up-right

如你所见,位于字符 <<>>=@ 之间的文本是 R 代码。该代码及其输出以类似列表的格式打印。该代码块可以接受一些额外参数以自定义动态输出,如下一节所述。

代码块

像前一节所示的代码块通常被称为 chunk。你可以在 knitr 的 chunk 中设置一些额外选项。见下例:

KnitrDemo2.png

在 Overleaf 上打开这个 knitr 示例arrow-up-right

<<>>.

  • 中传递了两个附加选项echo=FALSE

  • 这会隐藏代码,只打印 R 生成的输出。cache=TRUE

    circle-info

    如果将 cache 设置为 true,则该 chunk 不会运行,只会使用它生成的对象。如果该 chunk 中的数据没有更改,这可以节省时间。

注意,Overleaf 目前不支持 cache=TRUE 选项,但在本地应该可以工作。 参见arrow-up-right 参考指南

以获取更多选项。

内联命令

因此,数据的均值是 $\Sexpr{mean(X)}$

在 Overleaf 上打开这个 knitr 示例arrow-up-right

KnitrDemo3.png 命令 \Sexpr{mean(X)} 打印由 R 代码返回的输出mean(X)

。在大括号内可以传入任何 R 命令。

图表

图 \ref{fig:plot1} 是一个简单的直方图。

在 Overleaf 上打开这个 knitr 示例arrow-up-right

KnitrDemo4.png

该直方图使用存储在当前工作目录下 "data.txt" 中的数据。向该 chunk 传递了一些与图形相关的选项。plot1 这是用于引用该图的标签。前缀 "fig:" 是强制性的。你可以在示例中看到该图是用.\ref{fig:plot1} 引用的。 fig.pos="t"arrow-up-right.定位参数。这与figure 环境中使用的相同fig.height=4, fig.width=4图形的宽度和高度。

fig.cap="First plot"

图的标题(Caption)。

外部 R 脚本 你可以将外部 R 脚本的部分内容导入到 knitr 文档中。这很有用,因为通常会在将脚本包含到文档之前在外部程序中编写和调试脚本。 假设我们在一个名为以下文件中有如下 R 代码

## ---- myrcode1

## ---- myrcode2

代码必须出现在这里

<<myrcode2>>= 下面的 chunk 不会被打印 KnitrDemo5.png 中传递了两个附加选项 第一个 chunk 不会被打印,仅用于使用命令导入脚本 ## ----。这就是为什么选项 被设置的原因。另外,脚本不能被缓存。一旦脚本被导入,你可以使用在.

之后设置的标签来打印一个 chunk。 在这种情况下它是arrow-up-right .

myrcode2

我们已将所有文章代码片段放入一个项目,

  • 你可以在 Overleaf 上打开参考指南

    • 一些 chunk 选项: results

    • 。更改 R 代码生成的结果行为。可能的值有: markup

    • 使用 LaTeX 来格式化输出。 asis

    • 打印 R 的原始结果。 hold

  • 将输出结果保留并推到 chunk 的末尾。hide

    • 隐藏结果。 echo

    • 。是否包含 R 源代码。其他参数包括: echo=2:3

  • 仅打印第二行和第三行;echo=-2:-3 仅排除第二行和第三行。cache

  • 。是否缓存代码块。可能的值有:TRUE 仅排除第二行和第三行。cache

  • FALSEhighlight 。是否对源代码进行高亮。可能的值有:.

最后更新于