统计结果的保存:Sweave in R

Sweave是R中的一个函数,用来生成统计报告的。如果你希望将R的代码和LaTeX的代码整合到一个文件中,可以用Sweave函数生成.tex文件,利用安装好的LaTeX编译TeX文件就能生成包含相应计算结果的pdf文件。
Sweave处理的是.Snw文件,其格式几乎与.TeX文
件相同,不同的是,其中的R代码包含在<<>>= 和 @ 之间,其中<<>>内部可以放置Sweave处理时的参数。
下面是一个简单的.Rnw文件的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
documentclass[a4paper]{article}
title{How to use Sweave? }
author{Jinlong Zhang}
begin{document}
maketitle
In this example we use hclust() in R to perform a cluster analysis into a LaTeX{} document:
<<>>=
x<-c(1,2,6,8,11)
dim(x)<-c(5,1)
d<-dist(x)
d
hc<-hclust(d, "single")
dend<-as.dendrogram(hc)
@
the dendrograms are also included:
begin{center}
<<fig=TRUE,echo=FALSE>>=
par(mfrow = c(2, 2),mar = c(4,3,1,2))
plot(dend)
plot(dend, nodePar=list(pch = c(1,NA), cex=0.8, lab.cex=0.8), type = "t", center=TRUE)
plot(dend, edgePar=list(col = 1:2, lty = 2:3), dLeaf=1, edge.root = TRUE)
plot(dend, nodePar=list(pch = 2:1, cex=.4*2:1, col=2:3), horiz=TRUE)
@
end{center}
end{document}

将以上代码粘贴到记事本中,另存为test.Rnw文件,放置到R的工作目录,运行Sweave(“test.Rnw”)即可生成.TeX文件和相应的图形文件。eps图形文件等将在变异TeX文档时引用图形时用到。

可以看到,其中包含了两块R代码:
第一部分为

1
2
3
4
5
6
7
<<>>=
x<-c(1,2,6,8,11)
dim(x)<-c(5,1)
d<-dist(x)
hc<-hclust(d, "single")
dend<-as.dendrogram(hc)
@

第二部分为

1
2
3
4
5
6
7
<<fig=TRUE,echo=FALSE>>=
par(mfrow = c(2, 2),mar = c(4,3,1,2))
plot(dend)
plot(dend, nodePar=list(pch = c(1,NA), cex=0.8, lab.cex=0.8), type = "t", center=TRUE)
plot(dend, edgePar=list(col = 1:2, lty = 2:3), dLeaf=1, edge.root = TRUE)
plot(dend, nodePar=list(pch = 2:1, cex=.4*2:1, col=2:3), horiz=TRUE)
@

如果想要生成相应的pdf,只需用LaTeX变异相应的TeX文件即可。

注意:编译的时候,LaTeX会可能会提示找不到Sweave.sty文件,该文件可在C:Program FilesRR-2.9.0sharetexmf目录下找到,拷贝到TeX文件所在的目录下即可。

提供几个进一步学习的链接:
Sweave函数的作者Friedrich Leisch的主页: