我在文件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)。
有人可以建议怎么做吗?
答案 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
,我很确定您会得到您想要的内容。