我正在尝试使用read_chunk()
将我的R代码与我的Lyx文件分开,如here所述。
我的Lyx设置从knitr_minimal.lyx
编译了knitr_minimal.pdf
,没有任何问题。
但后来我试图取代它:
<<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'。
我很感激任何建议。
答案 0 :(得分:3)
您必须在与Lyx文档中的块标签对应的minimal.R
中的代码中添加标签,否则knitr
不知道在何处插入代码。
## @knitr boring-random
set.seed(1121)
(x=rnorm(20))
mx <- mean(x)
vx <- var(x)
如果您在knitr
web page中打开R脚本,则会看到## @knitr label
形式的多行注释。我将更新网页以澄清这一点。还有另一种方法可以指定标签,这些方法记录在?knitr::read_chunk
。
你的LyX文档的第二个问题是你将read_chunk()
放在boring-random
块中,但是你真的需要在之前阅读代码,然后将它插入一个块。
<<setup>>=
read_chunk('minimal.R')
@
<<boring-random>>=
@