我有一个Rjob写在a.R文件中,调用了b.R文件和c.snw文件中的函数。我通过“R CMD c.snw”调用c.snw文件。
我想要的是只将a.R文件通过\SweaveInput{a.R}包含在c.snw文件中,但是从a.R文件调用的函数的代码也应该写在tex文件中。这意味着Sweave将跟踪所包含的主R文件(即a.R文件)中的所有source()命令。
有人能建议如何做到这一点吗?
我想在这种情况下,使用knitr
软件包将会使生活更加容易。您可以将a.R
视为一个代码块的label-a
,并将其写入c.Rnw
文件中:
<<read-code>>=
read_chunk('a.R', labels = 'label-a')
@
<<label-a>>
@
library(knitr); knit('c.Rnw')
编译c.Rnw
时,a.R
将包含在结果中(这相当于将代码复制并粘贴到label-a
块中)。这被称为knitr
中的代码外部化。
\SweaveInput{}
不用于输入R源代码;您只能输入Rnw文档。如果你在 a.R
中使用 source("b.R", echo = TRUE)
,我相信你会得到想要的结果。