|
使用knitr处理Rnw文档
Rnw文档是保存了R代码的Latex文档。人们希望Latex中的R代码可以自动运行, 并将运行结果, 复制到Latex代码中。 同时, 给出绘制的图形等。
例如以下的代码, 是一篇Rnw文档的内容, 将其拷贝, 粘贴到记事本中, 另存为test.Rnw文件即可。 注意编码要选ANSI。
documentclass[CJK]{cctart}
usepackage{verbatim}
title{中文文章里面如何使用knitr? }
author{张金龙}
begin{document}
maketitle
在本例子中, 我们将演示在R中, 如何调用 hclust() 并且将结果写入 LaTeX{} 文件中:
<<>>=
x<-c(1,2,6,8,11)
dim(x)<-c(5,1)
d<-dist(x)
d
hc<-hclust(d, "single")
dend<-as.dendrogram(hc)
@
绘制的树状图:, 目前,kintr程序包在处理Rnw文档时, 不允许注释中有中文
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}
在Rnw文档中, R代码需要放在 <<fig=TRUE,echo=TRUE>>= 和 @ 之间。 其中的代码一定要可以执行。 在后续处理中,R的Sweave函数和knitr程序包中的knitr函数, 都能够生成相应的tex文件, 以及所需要包含的pdf图形。
fig=TRUE 表示, 要包括代码生成的图形; echo=TRUE 表示, 要包括运行结果所生成的代码。
Sweave函数就是为了处理Rnw文件而生的。 但是Sweave在处理中文的Latex文档时, 需要设定的参数很多, 并且常常出错。幸运的是,我们还有谢益辉编写的knitr程序包。
kintr在处理Rnw文档非常方便。 假设Rnw文档放在
C:/Users/Jinlong/Desktop/Sweave
文件夹之下,名为test.Rmw, 则使用以下R代码
setwd("C://Users//USER//Desktop//Sweave") ### 转换到工作目录,
library(kintr) ###导入kintr程序包
knit("test.Rnw")
即可在该目录下, 生成.tex文档, 以及需要包含的文件。
用TexWorks编译成pdf文档即可。
注意:kintr程序包在处理Rnw文档时,R代码的注释中不允许注释中有中文
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-19 11:42
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社