||
R的Sweave函数是用来生成动态统计报告的函数:如果将R代码包括在统计结果的Latex源代码中,用Sweave处理后, 就可以生成包含相应代码以及统计结果的统计报告, 十分方便。不过Latex的各种标记比较零碎,除非经常使用,否则各种标记很容易忘记。此外用Sweave通过Latex源代码编译非英文的文档极容易出错, 又很难解决, 同时Sweave函数对R的代码高亮支持也不是特别好。为此, 以谢益辉(http://yihui.name/)为首的一群玩标记语言(Markdown, html, Latex)的大咖搞出了一系列工具以及Markdown 标记语言的变体Rmarkdown。Rmarkdown生成动态动态报告可以很方便得转换成pdf、html以及docx格式。对于R代码高亮的支持也是非常值得称赞的。
Markdown是一种极为轻量级的标记语言,创始人为 John Gruber(https://en.wikipedia.org/wiki/John_Gruber)。html、latex、RTF等都是标记语言:在纯文本的基础上添加一定格式的标记, 以实现特殊的功能。Markdown的目标是通过极为简单的符号以及规则, 对文档进行排版, 同时让源代码便于书写和更改。markdown在github网站有很广泛的应用, 用来撰写每个软件的说明, 以自动生成网页。markdown的扩展名为.md。顾名思义,Rmarkdown是专门为R设计的markdown语言,只能用在Rstudio以及一些R程序包中。
本文简要记述介绍在Windows下, 通过Rstudio基于Rmarkdown文档,生成中文的动态报告。而在其他平台上编译中文的Rmarkdown文档要简单得多。
需要的软件:
Rstudio (https://www.rstudio.com/)
MikTex套装 (https://miktex.org/), 请注意要下载Win32版本
需要安装的R程序包:
markdown ( install.packages("markdown")
)
knitr ( install.packages("knitr")
)
rticles程序包, 以编译为 提供更多PDF样式模板 (至2018年5月提供: acm_article,acs_article,aea_article,ams_article,asa_article,ctex,elsevier_article,jss_article,plos_article,pnas_article,rjournal_article,rss_article,sim_article等)
Rmarkdown的基本结构
Rmarkdown需要以用YAML表头开始。YAML是一种计算机标记语言, 用来提供文档的基本信息。YAML需要缩进来体现各部分内容之间的逻辑关系。一般来说, Rmarkdown的YAML信息包括最基本的三项, 其中冒号前为关键字, 冒号后为参数, 以指明该文档的作者, 时间, 许可证, 通过什么软件编译,输出方式等。
例如:
title: "Untitled" author: "Anonymous" output: html_document
正文内容与markdown的语法无异, markdown的正文中可以插入不同等级的标题,图片,表格,超链接,Latex的数学公式等等。Rstudio给出了参考卡片 (https://www.rstudio.com/wp-content/uploads/2015/03/rmarkdown-chinese.pdf)
如果要编译中文文档,特别是生成pdf文档, 则需要更改YAML说明的output部分。设定- \usepackage{ctex}
以及 pdf_document: latex_engine: xelatex
以下文档, 已经在Windows10 下已经编译成功:
##### R Markdown文档开始 ########### --- title: "用R绘制 Color Checker" author: "张金龙" date: 2016-09-21 header-includes: - \usepackage{ctex} output: pdf_document: latex_engine: xelatex --- 比色卡主要用于摄影时校正白平衡等, 在摄影,美术, 科学研究中有很广泛的应用。下面介绍用R如何绘制比色卡。 首先Color Checker 所需的RGB颜色,来源于 http://en.wikipedia.org/wiki/ColorChecker ColorChecker Colorimetric Data, archived from the original on 2012-04-17, retrieved 2012-04-17 以下是R代码: ## 比色卡RGB颜色 sRGB <- c( "#735244", "#c29682", "#627a9d", "#576c43", "#8580b1", "#67bdaa", "#d67e2c", "#505ba6", "#c15a63", "#5e3c6c", "#9dbc40", "#e0a32e", "#383d96", "#469449", "#af363c", "#e7c71f", "#bb5695", "#0885a1", "#f3f3f2", "#c8c8c8", "#a0a0a0", "#7a7a79", "#555555", "#343434") x =1:24 y =1:24 dim(x) <- c(4, 6) dim(y) <- c(4, 6) x1 = 2 y1 = -2 for(i in 1:6){ for(j in 1:4){ x[j, i]<- x1 + i*(13.5+2) y[j, i]<- y1 - j*(13.5+2) } } x2 <- x -13.5 y2 <- y -13.5 par(bg ='black', mar =c(0,0,.8,0)) #### 绘制背景 plot(1, xlim =c(5, 94), ylim =c(-77, -18), pch ="") #### 绘制每种颜色的小方块 k =1 for(i in 1:4){ for(j in 1:6){ rect(x[i,j],y[i,j],x2[i,j],y2[i,j], col= sRGB[k]) k = k +1 } } mtext("Colour Checker in RGB",side =3, line=.01, col="white", cex =0.6) ##### R Markdown文档结束 ###########
将以上内容保存为.Rmd文件,并用Rstudio打开, 点击标题栏的Knit 即可编译为PDF。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-8 10:44
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社