Download presentation
Presentation is loading. Please wait.
Published byAshley Parks Modified 6年之前
1
浙江大学生科院 冯聪 ventson@zju.edu.cn 4/9, 2018 Hangzhou
2
R语言简介 来源 R是S语言的一种实现。S语言是由 AT&T贝尔实验室开发的一种用 来进行数据挖掘、统计分析、作图的解释型语言。最初S语言的实 现版本主要是S-PLUS。S-PLUS是一个商业软件,它基于S语言, 并由MathSoft公司的统计科学部进一步完善。 1995年由新西兰Auckland大学统计系的Robert Gentleman和 Ross Ihaka,编写了一种能执行S语言的软件,并将该软件的源代 码全部公开,这就是R软件,其命令统称为R语言。 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的 一个自由、免费、开源的软件,它是一个用于统计计算和统计制图 的优秀工具。 R主页 CRAN(软件及安装包)
3
R语言简介 R软件下载及安装 本次课程R软件版本为R-3.3.4 下载镜像-中国清华镜像网站
本次培训U盘中提供软件及参考资料 BioinformaticsTraining ├── Day1/R ├── R win.exe Windows 32/64 ├── R pkg Mac OS ├── data └── ref_material 选择对应系统版本的软件进行安装
4
R语言简介 控制台界面 菜单栏 快捷按钮 命令行
5
R语言基本操作 R数据类型 基础数据类型 结构化数据 数值型 Numeric 如 100, 0, -4.335
复数型 Complex 如 1+2i 字符型 Character 如 “China” 逻辑型 Logical 如 TRUE, FALSE 向量(vector) 一系列相同类型元素组成的一维数组; 矩阵(matrix) 矩阵是由相同类型元素组成的二维数组; 数组(array) 数组与矩阵类似,但维度可以大于2; 因子(factor) 类别和有序类别型变量; 数据框(dataframe) 是由一个或几个向量和(或)因子构成,它们必须是等长的, 但可以是不同的数据类型;(最常用) 列表(list) 列表可以包含任何类型的对象。 使用变量的时候要特 别注意,R对大小写敏感!名称不能以数字开始。
6
R语言基本操作 基本运算符 数学运算 运算后给出数值结果 +, -, *, /, ^ , %%, %/%, %*%
比较运算 运算后给出判别结果(TRUE FALSE) >, <, <=, >=, ==, != 逻辑运算 与、或、非 !, &, &&, |, || 赋值符 = 或 <- 注释 #(不支持多行注释)
7
R语言基本操作 向量创建 > character <- c("China", "Korea", "Japan", "UK", "USA", “France”, “India”, “Russia”) #字符型 #按Tab键自动补齐 > numeric <- c(1, 2, 3, 6, 7, 8, 4, 5) #数值型 > factor <- factor(c(“male”, “female”)) #因子型 > logical <- c(T, T, T, F, F, F, T, T) #逻辑型 > rep(2,times=4) #重复数列 > rep(1:2,c(10,15)) > seq(from=3, to=21, by=3 ) #等差数列 > runif(10, min = 0, max= 1) #随机数 > rnorm(10, mean = 0, sd = 1) #随机数(符合正态分布)
8
R语言基本操作 矩阵创建 应用函数:dim()和matrix() cbind() # 按列组合成矩阵 ( rbind() 按行 )
> dim(x) <- c(3,4) [,1] [,2] [,3] [,4] [1,] [2,] [3,] > x <- matrix(1:12,nrow=3,byrow=T) > t(x) #转置 > a <- c(1:5) > b <- c(2:6) > c <- c(3:7) > cbind(a, b, c) a b c [1,] 1 2 3 [2,] 2 3 4 [3,] 3 4 5 [4,] 4 5 6 [5,] 5 6 7 为行或列添加名称 > row.names() #rownames() > col.names() #colnames()
9
R语言基本操作 数据框创建 > a <- c(1:5); b <- c(2:6); c <- c(3:7)
> d <- data.frame(a, b, c) > d a b c #矩阵取值 > d[1, 2] [1] 2 > d[, 2] [1] > d$b > d1 <- data.frame(d, c1 = c(4:8)) #增加一列数据 > d1 a b c c1
10
R语言基本操作 列表创建 > lst$grade$math [1] 90 > lst[[4]]$math
创建列表 > lst <- list(name = "Donald", age = 69, gender = factor("male"), grade = data.frame(math = 90, English = 91)) > lst $name [1] "Donald" $age [1] 69 $gender [1] male Levels: male $grade math English 列表取值 > lst$grade$math [1] 90 > lst[[4]]$math 列表赋值 >lst$gender <- factor(“male”, levels = c(“female”, “male”)) #更改levels >lst$grade <- data.frame(lst$grade, biology = 89) #给数据框增加一列
11
R语言基本操作 数据类型判断及转换 对象类型判断 > mode() #元素类型 > class() #变量类型
> is.numeric() #返回值为TRUE或FALSE > is.logical() #返回值为TRUE或FALSE > is.charactor() #返回值为TRUE或FALSE > is.data.frame() #返回值为TRUE或FALSE 对象类型转换 > as.numeric() #转换为数值型 > as.logical() #转换为逻辑型 > as.charactor() #转换为字符型 > as.matrix() #转换为矩阵 > as.dataframe() #转换为数据框 > as.factor() #转换为因子
12
R语言基本操作 特殊数据类型 NA 缺失值 NaN 无意义数据 -Inf 负无穷 Inf 正无穷
> x <- c(NA, 1:3, -1:1/0) > x [1] NA Inf NaN Inf > is.na(x) [1] TRUE FALSE FALSE FALSE FALSE TRUE FALSE > is.finite(x) [1] FALSE TRUE TRUE TRUE FALSE FALSE FALSE > is.infinite(x) [1] FALSE FALSE FALSE FALSE TRUE FALSE TRUE > is.nan(x) [1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE
13
R语言基本操作 R帮助函数
14
R语言基本操作 管理工作空间
15
R语言基本操作 文本输出 重定向文本输出sink()函数(图形输出用pdf(), png(), svg()等函数)
> sink("test.txt") > x <- c(NA, 1:3, -1:1/0); x > sink() > x [1] NA Inf NaN Inf > dir() [1] "gene_fpkm_all.csv" "hair follicle cycle genes.csv" "hair_cycle_genes.tsv" [4] "hair_cycle_go.txt" "stem_d1.txt" "test.txt" > read.table("test.txt", header = FALSE) V1 V2 V3 V4 V5 V6 V7 V8 1 [1] NA Inf NaN Inf > file.remove("test.txt") [1] TRUE
16
R语言基本操作 文件导入和导出 导出对象var到test.txt文件 write.table(var, file = “test.txt”, row.names = FALSE, sep = “\t”, quote = FALSE) 读入txt文件 read.table(file, header = FALSE, sep = “\t”) # 对于Excel文件,可以先转换为csv文件,再读入 read.csv(), write.csv()
17
R语言包的安装及使用 CRAN R可以通过可选模块(包)的下载和安装满足各种需求。 使用网络镜像安装 本地安装 载入包
使用网络镜像安装 chooseCRANmirror() Install.packages(“PackageName”) 本地安装 在CRAN网站上下载所需包,使用install.packages(“path_to_zip”) 载入包 library(“PackageName”)
18
R语言包的安装及使用 Bioconductor
现在已经有1211个packages #bioconductor 软件安装方式 >chooseBioCmirror() #China Anhui >source(" >biocLite("PackageName")
19
R语言统计分析 基本统计 summary() apply()或sapply()
典型函数:mean()、sd()、var()、min()、max()、 median()、length()、range()和quantile() summary() summary()函数提供了最小值、最大值、四分位数和数值型变量 的均值,以及因子向量和逻辑型向量的频数统计 apply()或sapply() sapply(x, FUN, options)
20
R语言统计分析 部分统计函数 计算 log(x) log10(x) exp(x) sin(x) cos(x) tan(x) asin(x)
acos(x) min(x) max(x) range(x) length(x) 统计检验 mean(x) sd(x) var(x) median(x) quantile(x,p) cor(x,y) t.test() lm(y ~ x) wilcox.test() kruskal.test() 统计检验 lm(y ~ f+x) lm(y ~ x1+x2+x3) bartlett.test binom.test fisher.test chisq.test glm(y ~ x1+x2+x3, binomial) friedman.test
21
R语言绘图 基本绘图函数 plot() 绘制散点图等多种图形 hist() 直方图 boxplot() 箱线图
stripchart() 点图 barplot() 条形图 dotplot() 点图 piechart() 饼图 散点图与箱线图举例
22
R语言绘图 基本绘图函数及参数 基本图形元素函数 功能 lines() 添加线 curve() 添加曲线 abline() 添加给定斜率的线
points() 添加点 segments() 折线 arrows() 箭头 axis() 坐标轴 box() 外框 title() 标题 text() 文字 … 绘图参数 功能 font 字体 lty 线类型 lwd 线宽度 pch 点类型 col 颜色 xlab 横坐标 ylab 纵坐标 xlm 横坐标范围 ylm 纵坐标范围 …
23
R语言基本操作 参考书籍 R for Beginners R in action R Cookbook
ggplot2. Elegant Graphics for Data analysis
24
R语言基本操作 练习 创建如下数据框并输出到csv文件 对以上数据框进行简单统计分析 尝试安装以下软件包
ID Name Math English John Mary 3 103 Sherlock Jim Molly 对以上数据框进行简单统计分析 尝试安装以下软件包 pheatmap(CRAN), DESeq2(Bioconductor)
25
R语言在转录组分析中的应用 数据 步骤 data/countMatrix.csv(count矩阵)
diff_exp_results.csv(差异表达分析结果) 步骤 数据导入和查看 数据过滤 排序 选取显著子集 数据整合 简单作图
26
R语言与转录组 数据导入和查看 > setwd(“D:/data”) 导入csv数据
> countMatrix <- read.csv("countMatrix.csv", row.names = "X") > head(countMatrix) C1 C2 C3 T1 T2 T3 MSTRG MSTRG LOC MSTRG MSTRG MSTRG
27
R语言与转录组 数据过滤 过滤未注释基因(grep()) > countMatrix_filter <- countMatrix[- grep("MSTRG", rownames(countMatrix)), ] > head(countMatrix_filter) C1 C2 C3 T1 T2 T3 LOC LOC LOC LOC LOC LOC 过滤低表达基因(which()) > countMatrix_filter_low <- countMatrix_filter[- which(rowSums(countMatrix_filter) < 10), ] > head(countMatrix_filter_low) C1 C2 C3 T1 T2 T3 LOC LOC LOC LOC LOC LOC
28
R语言与转录组 排序 导入差异表达分析结果diff_exp_results.csv并查看 根据padj值从小到大排序(order())
> res <- read.csv("diff_exp_results.csv", row.names = "X") > head(res) baseMean log2FoldChange lfcSE stat pvalue padj LOC e LOC e LOC e LOC e LOC e LOC e 根据padj值从小到大排序(order()) > res_order <- res[order(res$padj), ] > head(res_order) baseMean log2FoldChange lfcSE stat pvalue padj HBEGF e e-45 SPAG e e-42 NELFCD e e-34 INAFM e e-29 CUL4A e e-23 CACTIN e e-19
29
R语言与转录组 选取显著子集 以fold change大于2倍,校正后p值小于0.05为筛选条件(subset()) > res_significant <- subset(res_order, abs(log2FoldChange) >= 1 & padj <= 0.05) > nrow(res_significant) [1] 281 > nrow(res_order) [1] 统计上调和下调基因数(sum()) > sum(res_significant$log2FoldChange < 0) [1] 159 > sum(res_significant$log2FoldChange > 0) [1] 122
30
R语言与转录组 数据整合 选取显著差异的基因,在countMatrix表中找出这些基因的count值 > genes_significant <- rownames(res_significant) > countMatrix_significant <- countMatrix[genes_significant, ] log10标准化count值 > countMatrix_significant_normalized <- log10(countMatrix_significant + 1) > head(countMatrix_significant_normalized) C1 C2 C3 T1 T2 T3 HBEGF SPAG NELFCD INAFM CUL4A CACTIN
31
R语言与转录组 简单作图 样本分布箱线图 >boxplot(countMatrix_significant_normalized, col = rep(c("darkorange", "dodgerblue", "hotpink"), 2)) 差异表达基因热图 >library(pheatmap) >pheatmap(t(countMatrix_significant_normalized), show_colnames = FALSE, cluster_rows = FALSE)
32
Thank you
Similar presentations