如果你知道 LaTeX,sweave 可能是你最好的选择。odfWeave 是一种类似的机制,但用于将代码嵌入到 OpenOffice.org 文件中。对于 HTML,有 R2html 包。但是所有这些都可能需要您稍微分解代码以充分利用系统。或者,您的 sweave/odfweave/html 模板可以在单个代码块中获取脚本的数据生成方面,并将输出显示(print()
语句)放置在需要的位置。您的图形也可以在脚本中调用以生成要作为单独文件嵌入到文档中的图形,然后您可以手动将其包含在模板中。
例如(这不是一个完整的.Rnw
文件用于运行sweave
)在一个 sweave 文件中,您可以在模板中放置类似这样的内容,该模板为 R 脚本的主要部分提供源代码,该脚本将执行分析并生成 R 对象:
<<run_script, eval=TRUE, echo=FALSE, results=hide>>=
source("my_script.R")
@
然后你需要在你想要打印输出的地方插入代码块:
<<disp_output, eval=TRUE, echo=FALSE, results=verbatim>>=
## The results=verbatim is redundant as it is the default, as is eval=TRUE
print(summary(x)) ## etc
@
然后你需要块来插入数字。
将您的分析代码与输出(打印和/或图形)分开可能也是一种很好的做法,尤其是在分析代码在计算方面很昂贵的情况下。您可以运行一次 - 甚至缓存它 - 同时根据需要更新输出/显示代码。
示例编织文件
使用 csgillespie 的示例 sweave 文件,我会像这样进行设置。首先是my_script.R
包含核心分析代码的文件:
x <- rnorm(100)
y <- jitter(x)
corXY <- cor(x,y)
mod.lm <- lm(y~x)
然后是 Sweave 文件
\documentclass[12pt]{article}
\usepackage{Sweave}
\begin{document}
An introduction
<<run_analysis, eval=TRUE,echo=FALSE, results=hide>>=
source("my_script.R")
@
% Later
Here are the results of the analysis
<<show_printed_output, echo=FALSE>>=
summary(x))
head(data.frame(x,y))
@
The correlation between \texttt{x} and \texttt{y} is:
<<print_cor, echo=FALSE>>=
corXY
@
Now a plot
\begin{figure}[h]
\centering
<<echo=FALSE, eval=TRUE, fig=TRUE, width=6, height=4>>=
plot(x,y)
@
\caption{\textit{A nice plot.}}
\end{figure}
\end{document}
你似乎想要的东西并不存在;一种将 R 代码和输出组合成文档文件的简单方法。也就是说,如果您不认为 sweave 及其同类简单。您可能需要重新考虑您想要做什么或如何安排分析、图形和输出代码,但您可能最好查看建议的选项之一(sweave、odfweave、brew、R2html)。
高温高压