1

我正在尝试使用read_chunk()将我的 R 代码与我的 Lyx 文件分开,如此所述。

我的 Lyx 设置编译knitr_minimal.pdffromknitr_minimal.lyx没有任何问题。

但后来我试图替换这个:

<<boring-random>>=
set.seed(1121)
(x=rnorm(20))
mx <- mean(x)
vx <- var(x)
@

x 的第一个元素是 \Sexpr{x[1]}。它的平均值是 \Sexpr{mx}。

有了这个:

<<boring-random, cache=FALSE>>=
read_chunk('minimal.R')
@

x 的第一个元素是 \Sexpr{x[1]}。它的平均值是 \Sexpr{mx}。

该脚本minimal.R保存在同一目录中,仅包含

set.seed(1121)
(x=rnorm(20))
mx <- mean(x)
vx <- var(x)

我将修改后的文件另存为knitr_minimal1.lyx并编译它。该文件knitr_minimal1.pdf编译正常,但不是

x 的第一个元素是 0.145。它的平均值是 0.3217。

我懂了

x 的第一个元素是 eval(expr, envir, enclos) 中的错误:找不到对象“x”。它的意思是 eval(expr, envir, enclos) 中的错误:找不到对象“mx”。

我会很感激任何建议。

4

1 回答 1

3

您必须在代码中添加minimal.R与 LyX 文档中的块标签相对应的标签,否则knitr不知道在哪里插入代码。

## @knitr boring-random
set.seed(1121)
(x=rnorm(20))
mx <- mean(x)
vx <- var(x)

如果您在knitr 网页中打开 R 脚本,您将看到表单的几行注释## @knitr label。我将更新网页以澄清这一点。有另一种方法来指定标签,记录在?knitr::read_chunk.

LyX 文档的第二个问题是您将read_chunk()其放入块中,但在将其插入块之前boring-random您确实需要阅读代码。

<<setup>>=
read_chunk('minimal.R')
@
<<boring-random>>=
@
于 2013-02-19T07:38:22.257 回答