关于 R Markdown 的一些 tips
https://mp.weixin.qq.com/s/gM3JjC4biYGKKZsIRC4XQQ
原创 鲍志炜 [生信菜鸟团](javascript:void(0);) 昨天
节选自 Pimp my RMD: a few tips for R Markdown https://holtzy.github.io/Pimp-my-rmd
章节自动编号
在 YAML 文件中用 number_sections: TRUE
参数设置自动编号:
---
跳过一行
可以用 html 中的 <br>
标签来插入换行符。
A first sentence
图片居中
同样可以用 html 代码居中图片
<center>
减少图片周围的空白区域
有时候 R 代码生成的图片周围有太多空白,这时可以用 fig.asp
参数来调整。这里我使用了 fig.asp=0.50
。
library(png)
上图为未加参数,下图为添加了参数
添加 footer 和 header
我们也可以在文档的开头或结尾添加一些 html 代码。下面是我在本文末尾添加的 html 代码:
将这段 html 代码保存为 footer.html
,然后在 YAML 中声明:
---
你的 footer 就会变成这样:
在标题前加上空行
除了在每个标题前加上 <br>
外,更方便的办法是直接在 .css
文件中添加样式。创建一个 style.css
文件:
h1, .h1, h2, .h2, h3, .h3 {
在 YAML 中指定该 .css
:
---
图注
我们可以在代码块的 header 中添加图注,例如:
{r, fig.align="center", fig.width=6, fig.height=6, fig.cap="Figure: Here is a really important caption."}
library(tidyverse)
自定义图注样式
同样可以用 css
自定义图注样式,比如把下面的代码添加到 style.css
文件中:
<style>
图注的样式就会改为这样:
数学公式
在 R Markdown 中可以用 LaTeX 语法插入数学公式,用 $
分隔 Latex 语法:
$A = (\pi * \lambda \times r^{4}) / \alpha $
并排放两张图
在 chunk header 中加上 out.width=c('50%', '50%'), fig.show='hold'
即可:
```{r out.width=c('50%', '50%'), fig.show='hold'}
为子标题实现选项卡切换的效果
这个样式同样用 .css
来实现。
首先,在一级标题后加上 {.tabset .tabset-fade .tabset-pills}
(把二级标题作为选项卡)
# Use buttons or tabs for sub-chapters {.tabset .tabset-fade .tabset-pills}
修改 .css
:
.btn {
用 DT 包来展示表格
DT 包[1] 可谓是 R Markdown 的最佳伴侣,它可以在网页上轻松实现交互式的表格:
library(DT)
隐藏代码
有时候你只想分享实验结果而非一些冗长的代码,这时就可以在 YAML 中设置参数来隐藏代码:
output:
高亮一段话
同样,我们可以用 css
代码来改变段落的背景色以高亮显示:
<style>
视差滚动
因为 R Markdown可以输出 html 文档,所以理论上可以实现网页中的各种视觉效果。比如实现「视差滚动」:
需要用到的 css
和 header.html
可从这里下载:https://github.com/holtzy/R-Markdown-Parallax
缓存
可以在代码块的 header 中添加 cache=TRUE
来缓存特定 chunk,也可以直接在文档的最开始加上 knitr::opts_chunk$set(cache=TRUE)
实现对整个文档的缓存。
注意:请谨慎使用此选项,强烈建议阅读 Yiyi Xie 撰写的有关此部分内容的文档[2]。
在网页右上角加上 Github 链接
为了实现这种效果,我一般用的是 Tim Holman 的代码[3],把这段代码粘贴到 header.html
中,使用方法同添加 footer 代码一样。
内部链接
您可以使用锚点在 R Markdown 中使用内部链接(可通过锚点连接网页内的任意标题)。如何实现这个效果:
•第一步 - 在标题处添加一个锚点:
# Add a github link in the corner of your document {#github-link}
•第二步 - 用链接指向该锚点:
For example, [this link](#github-link) will bring ...
交互式图表
可使用 plotly
构建交互式图表,充分利用 html 可交互的特性。
library(ggplot2)
主题
你可以使用任何 bootswatch 主题[4]来自定义文档的字体和外观。还可以调整高亮显示样式:
title: "your title"
模板
R Markdown 可以使用许多美观的模板,这里推荐两个包:
•prettydoc[5] by Yixuan Qiu•rmdformats[6] by Julien Barnier. It provides several templates, like readthedown
:
把网页分享到互联网上
按照下面的步骤就可以把你的 html 放在 github 上显示啦:
1.创建 github 账号。2.将 .rmd
文件重命名为 index.rmd
,并 Knit 生成 index.html
文件。3.使用工作目录生成一个 github 仓库4.进入该仓库:Settings -> GitHub Pages -> Source -> Master Branch -> Save5.稍等一会你的 .html
文件就可在相应域名访问。
用 R Markdown 创建静态网页
这一部分内容可参见 blogdown package[7] 。
创建 R Markdown 模板
关于这个话题详细内容参见 Rstudio documentation[8] 。
Session info
在文档末尾添加 session info 是一个比较好的习惯,这将提高结果的可重复性。只需一行代码即可实现:
sessionInfo()
## R version 3.4.1 (2017-06-30)
一些快捷键
运行代码
command + Enter on Mac
插入注释
command + Shift + C on Mac
Knit a R Markdown document
command + Shift + K on Mac
创建新的代码块
command + option + I on Mac (or command + alt + I depending on your keyboard)
重新格式化代码
cmd + Shift + A on Mac
引用链接
[1]
DT 包: https://rstudio.github.io/DT/
[2]
Yiyi Xie 撰写的有关此部分内容的文档: https://yihui.name/knitr/demo/cache/
[3]
Tim Holman 的代码: https://github.com/tholman/github-corners
[4]
bootswatch 主题: https://bootswatch.com/
[5]
prettydoc: http://yixuan.cos.name/prettydoc/
[6]
rmdformats: https://github.com/juba/rmdformats
[7]
blogdown package: https://github.com/rstudio/blogdown
[8]
Rstudio documentation: https://rmarkdown.rstudio.com/developer_document_templates.html
生信技能树目前已经公开了三个生信知识库,记得来关注哦~
每周文献分享
https://www.yuque.com/biotrainee/weeklypaper
肿瘤外显子分析指南
https://www.yuque.com/biotrainee/wes
生物统计从理论到实践
https://www.yuque.com/biotrainee/biostat
友情宣传
强烈建议你推荐给身边的博士后以及年轻生物学PI,多一点数据认知,让他们的科研上一个台阶:
•生信技能树的2019年终总结,你的生物信息学成长宝藏•2020学习主旋律,B站74小时免费教学视频为你领路•全国巡讲全球听(买一得五),你的生物信息学入门课