R-Markdown学习与使用

简介

markdown是一种纯文本格式的标记语言,只需要简单的标记语言就可将文本格式的内容具有一定的格式。核心是将文字与排版分开,从而将注意力集中于文字本身。但其本质,Markdown 还是 HTML 的简化版。因此缺点就是当需要 PDF 和 Word 等的文档格式的排版时不能很好解决。相较于 Markdown,LaTeX 是专门为 PDF 排版而生的,但其复杂程度就要比 Markdown 高得多。有没有什么办法把Markdown 的书写便利性和 LaTeX 丰富的排版能力结合到一起呢?于是R-markdown应运而生,这还多亏了国人益辉大神,在他的新作R包 knitr 中,提供了Markdown支持。并说服R社区主流编辑器厂家,开源软件 RStudio 提供 Markdown支持,从而使得Rmd这种新格式开始流行。
官方指导说明介绍

- 具备markdown简单的文本标记语言;
- 相较于markdown有更丰富的文档排版能力;
- 可以在生成文档时直接运行插入的代码块,并将运行结果输出在最终文档中。

  R-markdown的基本语法与markdown基本一致,核心区别在于写入代码区域的代码能在编译的时候同时生成相应的图、表和运算结果,省去了保存和插入的过程。同时能保存为 HTML、 WORD和PDF等格式。注意 PDF需要LaTex的支持。

  一个#是一级标题,二个#是二级标题,以此类推。支持六级标题。

# 这是一级标题
## 这是二级标题
### 这是三级标题
#### 这是四级标题
##### 这是五级标题
###### 这是六级标题
**这是加粗的文字**
*这是倾斜的文字*`
***这是斜体加粗的文字***
~~这是加删除线的文字~~

字体、字号和颜色

  Markdown本身不支持修改字体、字号和颜色,要实现字体颜色、字号的设置,需要使用内嵌的HTML。实现如下所示:

<font face="宋体">宋体</font>
<font face="宋体" color=red>红色宋体</font>
<font face="宋体" color=red size=5>5号红色宋体</font>
>这是引用的内容
---这是分割线
***这也是分割线
![图片alt](图片地址 ''图片title'')
图片alt就是显示在图片下面的文字,相当于对图片内容的解释。
图片title是图片的标题,当鼠标移到图片上时显示的内容。title可加可不加
[超链接名](超链接地址 "超链接title")
title可加可不加
- 列表内容
+ 列表内容
* 列表内容
注意:- + * 任何一种都可以,跟内容之间都要有一个空格
语法:数字加点
1.列表内容
2.列表内容
3.列表内容
上一级和下一级之间敲三个空格即可

表头|表头|表头
---|:--:|---:
内容|内容|内容
内容|内容|内容
第二行分割表头和内容。
- 有一个就行,为了对齐,多加了几个
文字默认居左
-两边加:表示文字居中
-右边加:表示文字居右
注:原生的语法两边都要用 | 包起来。此处省略
`代码内容`
(```)
  代码...
  代码...
  代码...
(```)
注:前后三个反引号处加了小括号,为了防止转译,实际是没有的。

r-markdown基本使用方法

  在RStudio新建一个rmarkdown文件后,会出现如下一个最简单的rmarkdown的模板。

设置YAML

  除了熟悉的 Markdown 语法,你会发现在文档的最开始多了一部分用--- 括起来的段落。这一部分是用来设置文档输出格式的属性的,语法类型为 YAML,类似于json格式。最常用的参数包括 title 即文档标题、author 即作者、date 即日期。output则表示输出格式,常见格式的如下:

html_document 输出html格式
pdf_document 输出PDF格式
word_document 输出word格式

  每种格式又有很多参数,详细参数见html_document,这里列举html_document的一些参数介绍。

title: "Habits" output: html_document: toc: ture #是否展示目录 toc_float: true #目录的形式,是否浮动 number_sections: true #各个标题的数字标记是否展示 df_print: paged #表格的形式,paged创建可分页的表 theme: cerulean #文档主题,来源于Bootswatch(https://bootswatch.com/) highlight: tango #指定语法高亮样式 #css: css/styles.css #加入额外的CSS,如果想从自己的css为文档提供所有样式,theme和highlight可设置为null #fig_width: 7 #图片宽度 #fig_height: 6 #图片高度 #fig_caption: TRUE #图片设置,控制图形是否带有标题 #code_folding: hide #是否隐藏代码块 #self_contained: false #在外部文件中保留依赖关系 #keep_md: true #是否在knitr处理,pandoc渲染之后保存一份markdown文件的副本 #template: quarterly_report.html #可以使用模板选项替换基础pandoc模板

  除了上述的参数外,其实还有一个蛮有用的includes参数可添加在html_document下面,主要用于在输出文档中添加额外的内容(在文档标题中或文档正文之前/之后包含内容)。

title: "Habits" output: html_document: includes: in_header: header.html before_body: doc_prefix.html after_body: doc_suffix.html

  以上所有参数,都是在 YAML 部分完成的,而没有涉及文档主体的 Markdown 部分。当进入 Markdown 写作部分时,可以只专心于文字,不必担心将格式和内容搅在一起。

编辑 Rmd 文档主体

  设置好YAML后,接下来按照markdown基本语法编写内容就行,这里需要注意的是,添加的是代码方法与markdown有略微差异。

(```){r example label, echo = FALSE, warning = FALSE}
  coding
(```)
注意:这里的代码即为使用R语言的代码,设置了代码块的名称为 example label,使代码块不包括在文档中,同时不输出警告信息。为了防止转译添加的小括号,正式代码中没有

  对于表格,尤其是读入外部数据时,可以用表格生成器:knitr包的kable()函数,除了用kable()函数外,有个kableExtra包(国人朱昊写的)的kable_styling()函数,配合kable()可以让表格排版更加美观点。此外还有益辉大神写的DT包对于动态展示表格非常好用。

  从Rmd格式可以导出为三种格式(HTML、PDF、WORD),用Pandoc实现。其中PDF需要LaTex支持,并且对中文的支持需要额外的设定。

  在RStudio中直接点击knit,选择输出格式输出,或者用rmarkdown的render函数输出。
knitr包将RStudio的Rmd格式文件编译为markdown格式,然后pandoc再将markdown文件直接渲染成HTML。

rmarkdown::render('report.Rmd', 'html_document')