使用Sweave将源R文件打印到附录

时间:2010-12-06 02:44:24

标签: r sweave

我将R和Rnw文件分开,然后在第一个Sweave块中加载带有load("file.R")的R数据/图。有没有办法可以将源文件打印到附录而不执行所有代码? (即,代码足够慢,我不想在source()块中echo=TRUE

谢谢!


更新 - 实际上,我认为我的source()想法不起作用。

4 个答案:

答案 0 :(得分:5)

使用乳胶包装怎么样?
添加到标题中 \ usepackage {fancyvrb}
然后
\ VerbatimInput {yourRfile.R}

答案 1 :(得分:3)

您可以使用highlight包输出格式正确,颜色鲜艳的代码:

highlight("myRfile.R", renderer = renderer_latex(document = F))

但是不要忘记在你的乳胶文件中加入你用document = T获得的冗长的序言。

您可以直接试用代码:

highlight(output="test.tex", 
          parser.output = parser(text = deparse(lm)),
          renderer =  renderer_latex(document = T))

得到

alt text

答案 2 :(得分:2)

我通常通过以下方式解决这个问题:

\begin{appendix}

\section{Appendix A}

\subsection{R session information}

<<SessionInforamtaion,echo=F,eval=T,results=tex>>=

toLatex(sessionInfo())

@


\subsection{The simulation's source code}

<<SourceCode,echo=F,eval=T>>=

Stangle(file.path("Projectpath","RnwFile.Rnw"))

SourceCode <- readLines(file.path("Projectpath","Codefile.R"))

writeLines(SourceCode)

@
\end{appendix} 

使用此功能,您必须考虑每行的最大字符数。

答案 3 :(得分:2)

将R和Rnw文件分开会破坏文字编程的目的。我自己的方法是将代码块包含在文本中的适当位置。如果我的观众对代码不感兴趣,那么我可能会将其标记为

<<foo, echo=FALSE>>=
x <- 1:10
@

我可能会在附录中汇编代码

<<appendix-foo, eval=FALSE>>=
<<foo>>
@
我承认这是一个很容易出错并且容易出错(被遗忘的大块)。人们很快就想将文档与支持材料(数据集,有用的辅助函数,非R脚本)捆绑到R包中,这些并不难创建。构建包会自动创建pdf和Stangle'd R文件,这正是您想要的。包装构建可能是一个缓慢的过程,但安装包不需要重建小插图,因此对于您提供包装的任何人来说都是快捷方便的。

对于使用格式/文本进行调整,我使用全局选项\SweaveOpts{eval=FALSE}