关于 R Markdown 的一些 tips

关于 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 参数设置自动编号:

---
image

跳过一行

可以用 html 中的 <br> 标签来插入换行符。

A first sentence
image

图片居中

同样可以用 html 代码居中图片

<center>

减少图片周围的空白区域

有时候 R 代码生成的图片周围有太多空白,这时可以用 fig.asp 参数来调整。这里我使用了 fig.asp=0.50

library(png)
image

上图为未加参数,下图为添加了参数

添加 footer 和 header

我们也可以在文档的开头或结尾添加一些 html 代码。下面是我在本文末尾添加的 html 代码:


将这段 html 代码保存为 footer.html,然后在 YAML 中声明:

---

你的 footer 就会变成这样:

image

在标题前加上空行

除了在每个标题前加上 <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)
image

自定义图注样式

同样可以用 css 自定义图注样式,比如把下面的代码添加到 style.css 文件中:

<style>

图注的样式就会改为这样:

image

数学公式

在 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'}
image

为子标题实现选项卡切换的效果

这个样式同样用 .css 来实现。

image
image
image

首先,在一级标题后加上 {.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)
image

隐藏代码

有时候你只想分享实验结果而非一些冗长的代码,这时就可以在 YAML 中设置参数来隐藏代码:

output:

高亮一段话

同样,我们可以用 css 代码来改变段落的背景色以高亮显示:

<style>
image

视差滚动

因为 R Markdown可以输出 html 文档,所以理论上可以实现网页中的各种视觉效果。比如实现「视差滚动」:

image

需要用到的 cssheader.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 代码一样。

image

内部链接

您可以使用锚点在 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)
image

主题

你可以使用任何 bootswatch 主题[4]来自定义文档的字体和外观。还可以调整高亮显示样式:

title: "your title"

模板

R Markdown 可以使用许多美观的模板,这里推荐两个包:

•prettydoc[5] by Yixuan Qiu•rmdformats[6] by Julien Barnier. It provides several templates, like readthedown:

image

把网页分享到互联网上

按照下面的步骤就可以把你的 html 放在 github 上显示啦:

1.创建 github 账号。2.将 .rmd 文件重命名为 index.rmd,并 Knit 生成 index.html 文件。3.使用工作目录生成一个 github 仓库4.进入该仓库:Settings -> GitHub Pages -> Source -> Master Branch -> Save5.稍等一会你的 .html 文件就可在相应域名访问。

image

用 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小时免费教学视频为你领路全国巡讲全球听(买一得五),你的生物信息学入门课

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容