生物信息学习的正确姿势NGS系列文章包括NGS基础、在线绘图、转录组分析(Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析(ChIP-seq基本分析流...
生物信息学习的正确姿势
NGS系列文章包括<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&chksm=ec0ddaf5db7a53e352053fa913b1eb031c2c4412093a2db78f9f4ae290078c0d397a0c3ca3d4&idx=1&mid=2247491455&scene=21&sn=d4fb468c36c56f98eddd6bfa021651f0#wechat_redirect">NGS基础</a>、<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&chksm=ec0e2be9db79a2ff36a5e46a2f1174e23210b1be64dd44b8cb9de7102c2e3c69398eb2096b90&idx=1&mid=2247495267&scene=21&sn=647b88c254f0a1a8eef852b5c7c8be9e#wechat_redirect">在线绘图</a>、转录组分析 (<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&chksm=ec0ddd29db7a543f7f44235ebfba8d7eb4fc99c5e7a481987489585b150d83316c68f7fb9b38&idx=1&mid=2247489699&scene=21&sn=6d2c74e720f67744c3b039c86606f64a#wechat_redirect">Nature重磅综述|关于RNA-seq你想知道的全在这</a>)、ChIP-seq分析 (<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&chksm=ec0ddb75db7a526322078c4ca838922c71eb93edb153373f682d450787abf378d6ec3b9c66cd&idx=2&mid=2247491327&scene=21&sn=6dd6fb6b5d5acab440ef4035e4480568#wechat_redirect">ChIP-seq基本分析流程</a>)、单细胞测序分析 (<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&chksm=ec0ddb70db7a5266a4826aa91f26e62c9b6c3fff6711ac646ef581511eaacb2a56df2f59d092&idx=1&mid=2247491322&scene=21&sn=0556e7e8723cac79cc32a2b99e7cadc6#wechat_redirect">重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程</a>)、DNA甲基化分析、重测序分析、GEO数据挖掘(<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&chksm=ec0ddb87db7a5291b3fc8c10549d6bd8dad989a8d9a011b302ccdc427618b15547067efa8506&idx=1&mid=2247491085&scene=21&sn=6695a2b2692739790bd96bd002a34167#wechat_redirect">典型医学设计实验GEO数据分析 (step-by-step)</a>)、<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&chksm=ec0e349adb79bd8c9961fe445b0f3cd6ef3a583f98a510a02aea18ff3be9710395961a92168f&idx=1&mid=2247495952&scene=21&sn=fd7f0472fb97a7da9199ffde0e17c07d#wechat_redirect">批次效应处理</a>等内容。
markdown是一种轻量级标记语言,它允许使用者可以通过简单的文本格式 编写文档,并且转换成html文档。markdown因为语法简单、上手容易,现在也越来越多的被文档编辑人员使用。有很多可以支持markdown编辑的应用软件,例如Mou、MarkdownEditor、Haroopad、Typora等,通过这些工具可以便捷的完成markdown文字录入,并且支持导出PDF、HTML等格式。
rmarkdown是R语言环境中提供的markdown编辑工具,运用rmarkdown撰写文章,既可以像一般的markdown编辑器一样编辑文本,也可以在rmarkdown中插入代码块,并将代码运行结果输出在markdown里。对于专注于用R语言写报告的数据分析师来说,rmarkdown既提高了数据分析工作的便捷性,也提高了数据分析报告的复用性。
点击Rstudio左上角的新建项目,选择Rmarkdown文件格式,即可建立一个rmarkdown编辑文件 。在弹出的选项框里,可以申明rmarkdown的Title、Author以及默认的输出文件格式,一般可以选择HTML、PDF、Word格式,具体见下图。
markdown的结构
在新建的markdown文件里,主要包含三块内容:1.YAML、2.markdown文本、3.代码块。
1)YAML
YAML是Rmarkdown的头部文件(上图1位置),YAML定义了rmarkdwon的性质,比如title、author、date、指定output文件类型等。
2)markdown文本
markdown文本是rmarkdown里的主要内容(上图3位置),由编辑人员按照markdown语法自行编写文本内容,
3)代码块
rmarkdown的一个主要功能是可以执行文件内的代码块(上图2位置),并将代码执行结果展示在markdown里。这对撰写数据分析报告带来了极大的便利。
R代码块一般通过{R}
来插入,另外{}内还可以定义参数来控制代码块运行结果的输出格式。一般包括代码及运行结果的输出、图片表格格式定义等。代码块参数主要包括如下几类:
eval eval控制了代码块是否执行。若设定为eval=TRUE,则markdown会执行代码块里的代码;若eval=FALSE,则markdown不会执行代码。
echo echo参数控制了markdown是否显示代码块。若echo=TRUE,则表示代码块显示在markdown文档显示代码块;反之,代码块不出现在输出结果中。
collapse collapse设置为TRUE或者FALSE.用来控制文本输出结果是否和代码块混在一起。
fig.show :设置了图片输出方式
fig.show=‘asis’:表示plot在产生他们的代码后面
fig.show=‘hold’:所有代码产生的图片都放在一个完整的代码块之后
fig.show=‘animate’:表示将所有生成的图片合成一个动画图片
fig.show=‘hide’:表示产生所有图片,但是并不展示
fig.width:设置图片输出的宽度
fig.height:设置图片输出的高度
fig.align 设置图片位置排版格式,默认为left,可以为right或者center
fig.cap :设置图片的标题
fig.subcap:设置图片的副标题
若markdown内的代码块存在一样的参数设置,则可以提前设计好全局的代码块参数。全局代码块通过knitr::opts_chunk$set函数进行设置,一般设置在YAML文件下方,具体见下图。
rmarkdown生成的表格,可以通过knitr包的kable()函数进行输出。以datasets包的rock数据集为例,在rmarkdown中输出rock数据集的表格(见下图)。
knitr::kable(head(rock), caption = 'rock数据',align='c')
除了用knitr::kable()输出表格,还可以kableExtra、huxtable等扩展包来美化表格。本文以kableExtra包为例,大致介绍rmarkdown中渲染表格的相关函数。
设置表格的宽度
x_html <- knitr:: kable(head(rock), "html")
kableExtra::kable_styling(x_html,bootstrap_options = "striped",
full_width = F)
设置表格的对齐方式
x_html <- knitr:: kable(head(rock), "html")
kableExtra::kable_styling(x_html,bootstrap_options = "striped",
full_width = F,
position = "left")
设置表格的字体大小
x_html <- knitr:: kable(head(rock), "html")
kableExtra::kable_styling(x_html,bootstrap_options = "striped",
full_width = T,
font_size = 20
设置表格的行与列
x_html <- knitr:: kable(head(rock), "html")
x_html <- kableExtra::kable_styling(x_html,
bootstrap_options = "striped",
full_width = T)
kableExtra::column_spec(x_html,1:2,
bold = T,
color = "white",
background = "#D7261E")
x_html <- knitr:: kable(head(rock), "html")
x_html <- kableExtra::kable_styling(x_html,
bootstrap_options = "striped",
full_width = T)
kableExtra::row_spec(x_html,1:2,
bold = T,
color = "white",
background = "#D7261E")
其它表格渲染
library(kableExtra)
data = plyr::mutate(rock[1:10, ],
perm = cell_spec(perm,"html",
color = "white",
bold = T,
background = spec_color(1:10,
end = 0.9,
option = "A",
direction = -1)),
shape = ifelse(shape > 0.15,
cell_spec(shape,
"html",
color = "white",
background = "#D7261E",
bold = T),
cell_spec(shape, "html",
color = "green",
bold = T)))
x_html <-knitr::kable(data,"html", escape = F, align = "c")
x_html <-row_spec(x_html,0, color = "white", background = "#696969" )
kable_styling(x_html,"striped")
Rmarkdowm作为可复用报告的优秀工具,除了提供文档编辑、图表输出外,还有许多主题格式供使用者选择。除了默认的主题外,还可以通过加载prettydoc、rmdformats、tufte等包获取更多主题格式。下面我们看看几类扩展包里的主题样式。
rmdformats包
---
title: "建立你的markdown项目"
author: "R友舍"
date: "2020/9/1"
output:
rmdformats::readthedown:
self_contained: true
thumbnails: true
lightbox: true
gallery: false
highlight: tango
---
prettydoc包
---
title: "建立你的markdown项目"
author: "R友舍"
date: "2020/9/1"
output:
prettydoc::html_pretty:
theme: cayman
highlight: github
---
tufte包
---
title: "建立你的markdown项目"
author: "R友舍"
date: "2020/9/1"
output:
tufte::tufte_html: default
---
cerulean
---
title: "建立你的markdown项目"
author: "R友舍"
date: "2020/9/1"
output:
html_document:
theme: cerulean
highlight: tango
---
rmarkdown的导出方法有两种,一种是依靠Rstudio手动导出,另一种是基于命令行的导出方式。
手动导出
手动导出方法很简单,在完成mardown编辑后,手动点击上图红圈内knit按钮,选择导出格式类型即可,Rstudio支持导出PDF、html、word三种类型。
命令行导出
命令行导出主要依靠rmarkdown::render实现,render函数主要包含如下几个参数:
input 指定需要导出的rmarkdwon文件地址
output_format 指定需要导出的文件类型,同样支持pdf、word、html等多种文件格式。若未指定output_format格式,则输出rmarkdown文件中output指定的格式类型。
使用rmarkdown最大的便捷是可以作为可重复性报告模版,提高数据分析报告制作效率。使用人员可以提前制作好数据分析模版,对于同类数据分析问题,只需要自动切换数据来源,即可自动生成分析报告,极大的提高了数据分析人员的分析效率。
这里我们以datasets包为例,制作一个数据集的数据概览报告,并将该报告作为模版,对datasets包内指定数据集批量输出分析报告。
在制作可重复性报告前,首先需要建立分析模版,然后再通过自动加载数据的方式,自动化产出分析报告。首先我们先建立一份模版文件
在建立好一份分析模版后,还有两个问题需要解决:1:如何动态的将数据集传入到rmarkdown中,从而实现复用报告模版的效果;2:如何批量生成报告并导出。
要解决第一个问题,需要引用YAML里的params参数,render函数可以通过修改params参数,将数据传入rmarkdown中,从而实现动态调整rmarkdown里的数据。
如上图所示,先在YAML中设置好自定义参数名称name,然后再通过render函数将name值传入到markdown中,并通过params$name实现对数据集名称的调用。
name <-"airquality"
render("用rmarkdown定制你的数据分析报告/可重复分析报告/模版.Rmd",
params = list(name=name),
output_file = paste0(name,'数据集概览'),
)
关于第二个问题,当设置好分析模版及依赖的参数后,只需要在rander函数外面循环传入参数即可,并将不通报告导出到指定文件夹内即可。
当我们要同时生成datasets数据集内airquality,mtcars,LifeCycleSavings三个数据集的分析报告时:
library(datasets)
name_list <-c("airquality","mtcars","LifeCycleSavings")
for(name in name_list){
render("用rmarkdown定制你的数据分析报告/可重复分析报告/模版.Rmd",
params = list(name=name),
output_file = paste0(name,'数据集概览'),
)
}
最终在目标路径下,即可看到已生成的三分报告,这样就实现了rmarkdown的重复性报告了。
<table> <tbody> <tr> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=3&mid=2247491374&scene=21&sn=88a9b24096fd371824c3da6515dcf4f9#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247486262&scene=21&sn=d38221a4063d866b1f10f4c9ebab5f88#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247483866&scene=21&sn=310341a1c8d348958c304df03dfd06a0#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247484194&scene=21&sn=61bcbe1c48e195c5c830396865789723#wechat_redirect">
</a>
</td> </tr> <tr> <td width="123">
<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247483927&scene=21&sn=23adf2b9d13400f2081f790e674e2cba#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247486486&scene=21&sn=32960c5a409236f7c808eb3d7e16ec4c#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247487820&scene=21&sn=8d1a339153625d6d96a2ef440bf2c581#wechat_redirect">
</a>
</td> <td width="123">
<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247484540&scene=21&sn=ef4b99f1a604f07aed7fc3a790c0c9c3#wechat_redirect">
</a>
</td> </tr> <tr> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247489699&scene=21&sn=6d2c74e720f67744c3b039c86606f64a#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247491322&scene=21&sn=0556e7e8723cac79cc32a2b99e7cadc6#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247488418&scene=21&sn=b2f78ec3d7f9ce2097af6a0d3ba12d8d#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=2&mid=2247491327&scene=21&sn=6dd6fb6b5d5acab440ef4035e4480568#wechat_redirect">
</a>
</td> </tr> <tr> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247491455&scene=21&sn=d4fb468c36c56f98eddd6bfa021651f0#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247491369&scene=21&sn=bf76d42dd6f626b025ba000e1571ff62#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247485530&scene=21&sn=1b11166354d38dc7999bcfff3d0cf7bc#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247491119&scene=21&sn=5e8bfa902cb4ae7c0bd95b76048582b5#wechat_redirect">
</a>
</td> </tr> <tr> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247489940&scene=21&sn=d50abfa41da8ccf73975ee7efca97426#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247487425&scene=21&sn=855a6f72cfa78840157aa87b68ce36f4#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247485782&scene=21&sn=f9b05d0a6b22861a871e062688942b66#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247485177&scene=21&sn=3adc0bd159670a296be0e886fec36ffc#wechat_redirect">
</a>
</td> </tr> <tr> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247484941&scene=21&sn=799b8a6376d2e17e24fd39d9fc10b3b3#wechat_redirect">
</a>
</td> <td width="123">
<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247484492&scene=21&sn=10c9b2308065b6260cfc69ea9e8d065f#wechat_redirect">
</a>
</td> <td width="123">
<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=1&mid=2247485139&scene=21&sn=a9b45f10c8722e78e54bfdd93587dc72#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzUzMjA4Njc1MA%3D%3D&idx=1&mid=2247484549&scene=21&sn=8363577508b1e895839154cf5fc9211f#wechat_redirect">
</a>
</td> </tr> <tr> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=3&mid=2247491222&scene=21&sn=5b140c65d0577bf86cd76660b1ec2002#wechat_redirect">
</a>
</td> <td width="123">
<a href="http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&chksm=ec0dd40cdb7a5d1a644d1acfc7931ac4d02c9607777715df20ae29d86cee783a81e198128b05&idx=3&mid=2247487878&scene=21&sn=85ce8f89da876c7a847b88bf6f5bbbf1#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=2&mid=2247489172&scene=21&sn=e4af40604eb56eeb58da11339a421881#wechat_redirect">
</a>
</td> <td width="123">
<a href="https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ%3D%3D&idx=2&mid=2247491345&scene=21&sn=8b7936732966b78cdf74e7c5b0e7bd55#wechat_redirect">
</a>
</td> </tr> </tbody> </table>nn
后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集
本站为非盈利网站,如果您喜欢这篇文章,欢迎支持我们继续运营!
本站主要用于日常笔记的记录和生活日志。本站不保证所有内容信息可靠!(大多数文章属于搬运!)如有版权问题,请联系我立即删除:“abcdsjx@126.com”。
QQ: 1164453243
邮箱: abcdsjx@126.com