张金龙的博客分享 http://blog.sciencenet.cn/u/zjlcas 物种适应性、分布与进化

博文

使用knitr处理Rnw文档

已有 15382 次阅读 2014-1-8 17:47 |系统分类:科研笔记

使用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代码的注释中不允许注释中有中文




https://blog.sciencenet.cn/blog-255662-757185.html

上一篇:苍茫的大地-香港麦理浩径第八段
下一篇:基于数码相机和GPS整理物种坐标的一个方案
收藏 IP: 202.64.82.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 16:03

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部