数据科学

关于 R Markdown 的一些 tips

2022-06-28  本文已影响0人  天涯清水

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

上一篇下一篇

猜你喜欢

热点阅读