Sweave,包括源R-Function文件

时间:2012-05-23 08:10:04

标签: r latex sweave

我在文件a.R中写了一个Rjob,它调用文件b.R中写入的函数和snw文件c.snw。我通过“R CMD c.snw”调用c.snw。

我正在寻找只能通过\ SweaveInput {a.R}将a.R包含到c.snw中的可能性,但是从a.R调用的函数的代码也应该写在tex文件中。这意味着Sweave跟踪包含的主R文件中的所有source()命令(此处为a.R)。

有人可以建议怎么做吗?

2 个答案:

答案 0 :(得分:7)

在这种情况下,我想使用knitr包可以让生活更轻松。您可以将a.R作为块label-a阅读,并将其写在c.Rnw中:

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

使用c.Rnw汇编library(knitr); knit('c.Rnw')时,a.R将包含在结果中(相当于将代码复制并粘贴到块label-a中)。这在knitr中称为code externalization

\SweaveInput{}不用于输入R源代码;你只能输入Rnw文件。

答案 1 :(得分:2)

如果您在source("b.R", echo = TRUE)中使用a.R,我很确定您会得到您想要的内容。