load("file.R")
我将 R 和 Rnw 文件分开,然后在第一个 Sweave 块中加载 R 数据/绘图。有没有一种方法可以在不执行所有代码的情况下将源 R 文件打印到附录?(即,代码足够慢,我不想把source()
它放在echo=TRUE
一块)。
谢谢!
更新——实际上,我认为我的source()
想法行不通。
使用 Latex 包怎么样?
添加到您的标题
\usepackage{fancyvrb}
然后
\VerbatimInput{yourRfile.R}
您可以使用highlight
package 输出格式良好、色彩丰富的代码:
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))
并得到
分离 R 和 Rnw 文件有点违背文学编程的目的。我自己的方法是在文本的适当位置包含代码块。如果我的听众对代码不感兴趣,那么我可能会将其标记为
<<foo, echo=FALSE>>=
x <- 1:10
@
我可能会在附录中将代码组装为
<<appendix-foo, eval=FALSE>>=
<<foo>>
@
我承认这有点混乱和容易出错(被遗忘的块)。很快就想将文档与支持材料(数据集、有用的辅助函数、非 R 脚本)捆绑到一个 R 包中,这些并不难创建。构建包会自动创建 pdf 和 Stangle'd R 文件,这正是您想要的。包构建可能是一个缓慢的过程,但安装包不需要重新构建小插图,因此对于您将包提供给谁来说都是快速和方便的。
为了处理格式/文本,我使用全局选项\SweaveOpts{eval=FALSE}
。
我通常通过以下方式解决这个问题:
\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}
使用它,您必须考虑每行的最大字符数。