2012-05-23 33 views
3

我有一個Rjob寫入文件a.R,它調用寫在文件b.R中的函數和一個snw文件c.snw。我通過「R CMD c.snw」調用c.snw。Sweave,包括來源的R函數文件

我正在尋找一種可能性,只通過\ SweaveInput {a.R}將a.R包括到c.snw中,但是從a.R調用的函數的代碼也應該寫入tex文件中。這意味着Sweave跟蹤包含的主R文件(這裏是a.R)中的所有source()命令。

任何人都可以建議如何做到這一點?

回答

2

我很肯定你會得到你想要的,如果你在a.R中使用source("b.R", echo = TRUE)

+0

謝謝。這是更進一步。 – user1407220

6

我猜在這種情況下,使用knitr包的生活會更容易。您可以在c.Rnwa.R作爲一個塊label-a,並把它寫:

<<read-code>>= 
read_chunk('a.R', labels = 'label-a') 
@ 
<<label-a>> 
@ 

當您編譯c.Rnwlibrary(knitr); knit('c.Rnw')a.R將被納入結果(也就相當於&粘貼代碼複製到塊label-a) 。這在knitr中被稱爲code externalization

\SweaveInput{}不用於輸入R源代碼;你只能輸入Rnw文件。