在使用LaTeX / beamer的knitr演示中,我想说明sem
包,其中几个函数在内部使用scan()
来读取,然后解析数据和模型规范。
以下块会出现编织错误
<<union1>>=
library(sem)
union <- readMoments(diag=TRUE,
names=c('y1', 'y2', 'y3', 'x1', 'x2'))
14.610
-5.250 11.017
-8.057 11.087 31.971
-0.482 0.677 1.559 1.021
-18.857 17.861 28.250 7.139 215.662
@
显示在这里:
<text>:5:13: unexpected numeric constant
4: 14.610
5: -5.250 11.017
^
即使我在块中使用eval=FALSE
,我也会收到错误,但我确实得到了一些合理的输出到PDF文件。
另一个例子,同样给出错误的是这个块指定一个sem模型:
<<union2, eval=FALSE >>=
union.mod <- specifyEquations(covs=c("x1", "x2"))
y1 = gam12*x2
y2 = beta21*y1 + gam22*x2
y3 = beta31*y1 + beta32*y2 + gam31*x1
@
这些都可以在R控制台中使用。如何使用knitr完成它们?
我理解为什么scan()
不能在块中工作以及如何使用text
参数来解决这个问题,但我不知道如何解决这个问题在块中调用的函数在内部使用scan()
。
我也理解我可以将数据放在文件union.txt
中并使用类似
<<union1>>=
library(sem)
union <- readMoments(file='union.txt', diag=TRUE,
names=c('y1', 'y2', 'y3', 'x1', 'x2'))
@
但后来我不知道如何在演示文稿的块中显示此文件的内容。
答案 0 :(得分:1)
John Fox指出R-Forge上的sem
包的开发版现在包含一个text
参数,通过从textConnection读取来简化这一点。我现在可以用它作为:
<<union1, size='footnotesize' >>=
library(sem)
union <- readMoments(diag=TRUE,
names=c('y1', 'y2', 'y3', 'x1', 'x2'),
text="
14.610
-5.250 11.017
-8.057 11.087 31.971
-0.482 0.677 1.559 1.021
-18.857 17.861 28.250 7.139 215.662
")
@