||
本节作者:刘永鑫 中国科学院遗传与发育生物学研究所;陈同 中国中医科学院
版本1.0.2,更新日期:2020年8月31日
本项目永久地址: https://github.com/YongxinLiu/MicrobiomeStatPlot ,本节目录 123R,包含R markdown(*.Rmd)、Word(*.docx)文档、测试数据和结果图表,欢迎广大同行帮忙审核校对、并提修改意见。提交反馈的三种方式:1. 公众号文章下方留言;2. 下载Word文档使用审阅模式修改和批注后,发送至微信(meta-genomics)或邮件(metagenome@126.com);3. 在Github中的Rmd文档直接修改并提交Issue。审稿人请在创作者登记表 https://www.kdocs.cn/l/c7CGfv9Xc 中记录个人信息、时间和贡献,以免专著发表时遗漏。
本文教程的源代码见123R简介和统计绘图.Rmd,实战代码详见R.Rmd。
图. R常用图形 https://www.r-graph-gallery.com/
图. R语言世界使用率2020年8月排名 https://www.tiobe.com/tiobe-index/
目前R语言是世界上最受欢迎的10大语言之一。而且近些年始终处于上升阶段,截止2020年8月位于用户使用率榜单的第8位,较去年同期使用人数近乎翻倍。特别是在生命科学领域,被认为是使用频率最高的语言。其用户主要集中于专业领域,目前在移动设备、网页中使用率较低,但随着云端计算平台的发展,便携式移动端也是R未来的发展方向。
Rstudio编程集成开发环境(IDE,Integrated Development Environment) https://www.rstudio.com
RStudio是一款R语言的IDE,R自带的环境操作较为复杂,而RStudio很好地解决了该问题,而且它还具有调试、可视化等功能,支持纯R脚本、Rmarkdown (脚本文档混排)、Shiny (交互式网络应用)等。
具体安装和配置步骤,详见:
图. RStudio界面。主要分为4个区域。
R包主要来源CRAN,Bioconductor和Github三个网站。
CRAN是R官方包的发布网站,安装方法如下:以绘图包ggplot2为例。
install.packages("ggplot2")
R包默认覆盖安装,反复运行上述代码会多次下载该包并重新安装,不仅非常浪费时间,而且有时还会破坏原有包导致无法正常使用。推荐大家安装包时采用如下条件判断方法安装:即使用requireNamespace()函数判断目标包是否存在,如不存在时才安装。
if (!requireNamespace("ggplot2", quietly=TRUE))
install.packages("ggplot2")
在RStudio中默认使用美国数据源,如果下载慢,可指定国内镜像,如清华、中科大等离自己物理距离较近的国内镜像仓库。
图. R包安装源的选择。选择Tools菜单 —— Global Options选项,按上图标识顺序切换为国内源。
也可以在代码层面指定安装源,如清华镜像源”https://mirrors.tuna.tsinghua.edu.cn/CRAN"。
site="https://mirrors.tuna.tsinghua.edu.cn/CRAN"
if (!requireNamespace("ggplot2", quietly=TRUE))
install.packages("ggplot2", repos=site)
使用RStudio中的包管理页面安装:
Bioconductor是专门发布生信相关R包的网站,目前已经发了1903个R包。
安装Bioconductor的包,需要先安装CRAN来源的BiocManager包,此处以edgeR为例。注:edgeR是当前较流行的具有测序数据差异比较功能的R包。
# 检查BiocManager包是否存在,不存在则安装
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
# 使用BiocManager安装Bioconductor的包
if (!requireNamespace("edgeR", quietly = TRUE))
BiocManager::install("edgeR")
CRAN和Bioconductor内都是经过检测正式发布的R包。还有很多临时、或正在开发中的包只存在Github,如果需要使用这些R包,我们可以使用开发者工具devtools进行安装。
安装Github的R包,输入名称由用户名和包名两部分组成。以我编写的amplicon包为例,保存于github中的microbiota用户下,其提供了扩增子分析常用统计分析和绘图样式的函数。
# 检查devtools是否存在,没有则安装
if (!requireNamespace("devtools", quietly = TRUE))
install.packages("devtools")
# 加载devtools
library(devtools)
# 判断amplicon是否存在,没有使用devtools安装
if (!requireNamespace("amplicon", quietly = TRUE))
devtools::install_github("microbiota/amplicon")
此外,很多R包的最新版,也都在github上保存,想要体验最新版本的功能,也可查找软件的github仓库位置并采用上述方法安装所需版本。
注意:R的源码方式安装,有时还需要额外安装Rtools。Windows版本下载链接:https://cran.r-project.org/bin/windows/Rtools/
图. R语言数据结构。向量(vector)、矩阵(matrix)、数组(array)、数据框(data frame / table)、列表(lists)
图. 向量(vector)、列表(lists)、矩阵(matrix)、数据框(data frame / table)的索引方式
向量存储相同的数据类型。如果有字符型元素,所有元素都转换为字符型。
is.atomic() 判断是否为向量。
is.vector() 判断没有属性或仅有names属性的向量为真(TRUE)
a <- c(1,2,3,4)
# 判断一个变量是不是vector
is.vector(a)
is.atomic(a)
因子是节省存储空间的特殊类型,适用于存在较多重复值情况。每个原值只存储一份,在原数据中用数字表示。去重后的原值被称为水平 (level),可以修改顺序。绘图时调整顺序就是使用的这个。
a <- c('y','i','s','h','e','n','g','x','i','n')
b <- as.factor(a)
# 注意levels默认是字母顺序
b
更改因子的顺序
# 设置levels
b <- factor(a,
levels=c("y","x","s","e","g","i","h","n"),
ordered=T)
b
矩阵是二维的数组(array),所有元素都是相同类型。可以使用[row, col]索引。
常用矩阵相关函数:
# 矩阵
a <- matrix(1:20,nrow=5,ncol=4,byrow=T)
a
a[3,4]
列表是不同类型的变量组合在一起,常用于存储各种复杂类型函数或绘图的输出数据。
ysx_list <- list(web="www.ehbio.com/Training",
staff=c("LYX","CL","ZX","CT"),
contentL=list(R=c("basic","plot"),
Linux=c("basic","windows")))
ysx_list
数据框,子列表长度一致的特殊list,具有list和matrix的双重特性,通常与matrix可互换。
若在程序运行时碰到”‘x’ must be matrix”,需要做下as.matrix转换;若是”‘x’ must be data.frame”,需要做下as.data.frame转换。这里的x是你提供的数据变量。
a <- data.frame(staff=c("CT","YX","ZX","CL"),
unit=c("Ehbio","IGDB","IM","IM"))
查看数据类型
mode(a)
class(a)
typeof(a)
storage.mode(a)
mode(ysx_list)
class(ysx_list)
class(ysx_list$web)
storage.mode(class(ysx_list$web))
class(ysx_list$staff)
storage.mode(ysx_list$staff)
typeof(2)
typeof(as.integer(2))
df <- read.table("metadata.txt", header=T, row.names=1, sep="\t",stringsAsFactors=T)
head(df)
read.table常用的4个参数。输入文件;标题行(header),可选T/F;行名(row.names),默认为NULL,通常指定第一列(1);分隔符(sep)默认为空,通常要指定制表符(\t)或分号(;)。
其他常用参数:
更多帮助查看?read.table。
write.table(df, file="metadata.tsv", append=F, quote=F, sep="\t", row.names=T, col.names=T)
write.table常用的参数。
我们先随机生成两组数据,然后用T检验进行显著性分析。
# rnorm生成以0为均值,1为标准差的10个数
A = rnorm(10)
# rnorm生成以3为均值,1为标准差的10个数
B = rnorm(10, 3, 1)
# t检验
t.test(A, B)
data(iris) # 加载R内容测试数据——鸢尾花数据
head(iris) # 显示数据格式
# anova统计不同物种花萼长宽数据
model = aov(Sepal.Length ~ Species, data=iris)
Tukey_HSD <- TukeyHSD(model, ordered = TRUE, conf.level = 0.95) # TukeyHSD检验
# 显示统计结果
Tukey_HSD$Species
library加载ggplot2包,采用内置鸢尾花数据绘制箱线图,并用ggsave保存为指定大小的PDF矢量图。
library(ggplot2)
# ggplot命令绘图,指定数据、x、y、颜色、图表类型
(p = ggplot(iris, aes(x=Species, y=Sepal.Length, color=Species)) +
geom_boxplot())
# ggsave保存图片
ggsave(paste0("26boxplot.pdf"), p, width=89, height=59, units="mm")
更多ggplot2的内容,请阅读ggplot2作者Hadley Wickham编写的《ggplot2 Elegant Graphics for Data Analysis》。此书2016年由Springer出版,目前已经被引用2万余次。本书的最新版及源代码详见:https://github.com/hadley/ggplot2-book
此外公众号也分享过学习ggplot2绘图基础笔记如下,供参考:
ggplot2 Elegant Graphics for Data Analysis https://github.com/hadley/ggplot2-book
责编:刘永鑫 中科院遗传发育所
版本更新历史
1.0.0,2020/8/30,刘永鑫,初稿
1.0.1,2020/8/31,吴翔宇 宁波大学,全文校对
1.0.3,2020/8/31,刘永鑫,整合校对
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-19 23:29
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社