2015-04-27 31 views
1

在使用LaTeX/beamer的針織演示文稿中,我想說明sem包,其中幾個函數在內部使用scan()來讀取並解析數據和模型規範。使用掃描()函數從一個函數中調用

以下塊給出了一個knitr錯誤

<<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

也看到這篇文章:http://stackoverflow.com/q/11248705/559676 –

回答

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 
") 
@