代码改变世界

使用RStudio写作Rmd文档

2013-04-10 19:35  robturtle  阅读(19141)  评论(0编辑  收藏  举报

基本概念

  • Markdown:是一种为了源文件易读性,易维护性,方便快速写作,合作修改的文本语法。原生支持生成html。不支持矢量图和表的绘制。
    • 注意 :Markdown有许多变异版本,比如Github Flavored Markdown支持代码语法高亮。
  • R Markdown:这是一个国人开发的文档格式,完美衔接了R,\( LaTex \)和Markdown,使得文章既有Markdown的简洁语法,又有R和LaTex强大的数学表达和图表能力。
  • Pandoc:可以把这个看成是万能文档格式转换器,支持html, pdf, \( LaTex \),MS Word,Markdown……等文档格式的互相转换。

使用前须知

Rmd文档翻译不是R的标准功能,必须要安装第三方包,请按照以下的步骤进行:

  1. 打开RStudio
  2. 确保已经连接互联网
  3. 在Console(控制台)下输入命令
    • install.packages(“knitr”)
  4. 新建一个 R Markdown 文档,享受写作吧!

Markdown学习帮助

Markdown的语法用两只手就能数完,一般你只需要看看别人写的Rmd/md文档,你就能很快上手。如果你需要Markdown语法的帮助,在RStudio下新建一个Rmd文档,你将看到一个写着“MD”的按钮,点击它你就能获得帮助了。

R Markdown生成流程

  1. 编辑好Rmd文档,点击按钮“Knit HTML”
  2. Knitr将Rmd中的LaTex和R翻译,生成标准的Markdown文档(后缀名md)
  3. knitr自动通过标准md文档生成HTML文档。

注意 :只要有了md文档,你可以使用Pandoc或其他工具转换成大部分的文档格式

一些问题

特别注意

  • 目前RStudio似乎还只支持英文名称的文件名,如果在点击“Knit HTML”按钮时出现"Knitr return command status 1"等类似的错误信息,请确保文件所在路径中不包含中文、空格等非法字符。
  • 一般生成html时,会使用系统默认的编码格式,如果发现生成乱码,请在"File->Save with encoding"下改成合适的编码即可。比如:中文简体-> GB2312

用R语言绘制图表,用\( LaTex \)书写数学公式

这里有两个用R绘制图表的例子,需要注意的是,最终文本不仅会将最后生成的图表打印,还会同时打印生成图表的命令。这也是科学界的惯例了,这样审稿人或你的合作者就能很方便地校验你的计算步骤,并且修改错误了。

嵌入R代码

观察源码和最后生成的图表,你将发现嵌入R代码是一件非常简单的事情

绘制统计表:

summary(cars)
##      speed           dist    
##  Min.   : 4.0   Min.   :  2  
##  1st Qu.:12.0   1st Qu.: 26  
##  Median :15.0   Median : 36  
##  Mean   :15.4   Mean   : 43  
##  3rd Qu.:19.0   3rd Qu.: 56  
##  Max.   :25.0   Max.   :120

绘制图:

plot(cars)

plot of chunk unnamed-chunk-2

嵌入LaTex代码

在前面,我已经使用了行内方式嵌入了\( LaTex \)的logo,这是使用

$latex equation$

的语法。

如果你想使用整行的latex公式,只需要使用

$$
  latex equation
$$

的语法。

比如这个公式:

$$
  \sum_{i=1}^{n}{i} = \frac{n*(n-1)}{2}
$$

将输出:

\[ \sum_{i=1}^{n}{i} = \frac{n*(n-1)}{2} \]

R Markdown的语法糖

除此以外,R Markdown还提供了一些很方便的非标准Markdown的功能,比如:绘制简单表格

绘制表格

绘制表格的语法非常地人性化和易读,就像这样:

姓名  | 学院 | 班级 | GPA      
------|------|------|------
刘洋  | 土木与交通 | 交通工程 | 3.1
刘二  | 计算机     | 软件工程 | 3.9
刘三  | 哲学院     | 认识论   | 3.0

将会生成:

姓名学院班级GPA
刘洋 土木与交通 交通工程 3.1
刘二 计算机 软件工程 3.9
刘三 哲学院 认识论 3.0

注意

  • 每行不一定要对齐
  • 对于是否绘制行间线,可以通过CSS改变主题实现
  • 对于非常复杂的表格,还可以用嵌入LaTex代码绘制

更多入门介绍

这里有一个对markdown的一份简短介绍: 阳老师的博客