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

博文

Rmarkdown与R的动态统计报告 (2019-02-19)

已有 7134 次阅读 2016-9-21 14:49 |个人分类:软件介绍|系统分类:科研笔记

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文档要简单得多。

需要的软件:

  1. Rstudio (https://www.rstudio.com/

  2. MikTex套装 (https://miktex.org/), 请注意要下载Win32版本

  3. R (https://cran.r-project.org/bin/windows/base/

需要安装的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。




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

上一篇:生态学和进化的重要链接EcoEvoLinks
下一篇:用herblabel程序包打印不同风格的植物标本标签
收藏 IP: 113.28.150.*| 热度|

1 余国志

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

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

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

GMT+8, 2024-12-27 01:21

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部