1. 介绍
1.1. 初学者运行代码
- 一行一行地运行
- 慢+理解=进步
1.2. R studio界面
- environment中会记录现有变量
- history中会记录执行过的命令
- files中显示当前文件夹中的文件
- plots画板
- packages中显示已安装的包(.libPath()可以找到安装包的路径)
- help中显示帮助内容(用help()获取帮助)
- viewer暂时用不到
1.3. 重要函数
- ?
- class() 查看类型
- str() 查看结构
- mode()
- typeof()
2. 变量
2.1. 变量类型
- 向量型(Vector):可以视作一个数据集
- 矩阵型(Matrix)和数组型(Array)
- 数据框架型(Data Frame)和列表型(List):类似C的结构体,其中各项可以属于不同的数据类型
2.2. 创建变量
2.2.1. 向量
-
a <- c()
- 数据类型之间有等级
- NULL<raw<逻辑类型<整型<实数类型<复数类型<列表<表达式(把配对列表当作普通列表)
- 函数生成变量
- 内置变量
2.2.2. 矩阵
- dim(向量)=c(行数,列数)即为矩阵(先排列,再排行)
- rbind/cbind(c(),c())将两个向量结合成一个矩阵(分别是一行/列)
2.2.3. 数据框
- 通过as函数把矩阵变成数据框架
d <- data.frame(list(kids=c("jack","jill"),ages=c(12,10)))
- 通常通过读取文件或数据库来创建
2.2.4. 列表
x <- list(u=2, v="abc")
2.3. 变量操作
- 用索引(index)/逻辑符来取元素
- 引入is系列函数和as系列函数(不需要把所有函数背下来,而应该找规律)
- paste/paste0()将字符串连接到一起(中间有空格/无空格),strsplit()将字符串拆开(返回list)
- 矩阵乘法 %*%
- 对于数据框架和列表可以用$获取组件
- 列表的一种常见用法是把多个值打包组合到一起,然后从函数中返回。
3. 数据和导出
- read/write系列函数,灵活运用,熟悉参数,以应对不同的需求
- 参数包括但不限于:分隔符/注释信息/表头/行名
a = read.table('', head = T, sep = '\t')
b = read.table('', comment.char = '!', head = T, sep = '\t') # 带感叹号的不读取
write.csv(b,'.csv')
d = read.csv('.csv')
read.table('', head = T, sep = '\t')
save(b,file = 'b_input.Rdata')
load(file = 'b_input.Rdata')
b = b[,-1] # 取第一行
b = log2(b)
pheatmap::pheatmap(b[1:10,])
4. 中级变量操作
- 函数无穷无尽,但其中有规律
- 所有函数都有参数
- R可以避免一些低阶循环
5. 热图
- 学习一个新包/新函数的方法:?+看example
- 看的过程中不断尝试改变标准代码来进一步理解
rm(list = ls()) #魔幻操作,一键清空
library(pheatmap)
a1 = rnorm(100)
dim(a1) = c(5,20)
pheatmap(a1)
a2 = rnow(100)+2
dim(a2) = c(5,20)
library(pheatmap)
pheatmap(a1, cluster_rows = F, cluster_cols = F)
pheatmap(cbind(a1,a2))
pheatmap(cbind(a1,a2), show_rownames = F, show_colnames = F)
6. 绘图
- 常用包:ggpubr ggplot2
7. ID转换
- 文献附件里的基因名有时候是一些怪东西,需要找到对应表格,然后用代码把这些名字变成正常名字
- 一些函数
strsplit('','[.]') #根据点号分割,注意中括号
duplicated() #去重
- 一些包
org.Hs.eg.db #在包里有基因注释关系
8. 任意基因任意癌症表达量分组的生存分析
- 制作生存曲线的网页工具 oncolnc
- 分组看表达量
library(ggstatsplot)
ggbetweenstats(data = dat, x = Group, y = Expression)
- 学习包:survival
- 大部分代码都不是自己写的,学会别人的包,微调参数即可
- 学会R语言基础变量结构和基础函数操作,应用到别人的高级代码中
9. 任意基因任意癌症表达量和临床性状关联
- 网页工具 cBioPortal
- 可以利用网页工具获取数据自己分析作图
10. 表达矩阵样本的相关性
- 看两个变量的相关性
> cor(1:10,1:10)
[1] 1
> a = rnorm(10)
> b = rnorm(10)
> cor(a,b)
[1] -0.1555608
> a = rnorm(10)
> b = 10*a+rnorm(10)
> cor(a,b)
[1] 0.9971822
- bioconductor包
- 数据包(加载数据)
- 功能包
- 注释包(各种芯片、基因间转换)
- 写函数的时候(比如apply中的函数)可以先调试一下前几行,再写进去
- 去除低表达,再看相关性,避免由于表达过低出现假相关性
11. 芯片表达矩阵下游分析
- 只需要表达矩阵和分组信息,剩下的代码复制微调即可
- 使用的分析方法(包):DEG by Lima
- 加入了回归相关的校验
- 构造比较矩阵
- 画火山图
- 挑选变化比较大大基因
- 富集分析
12. RNA-seq表达矩阵差异分析
-
芯片获取表达矩阵
exprSet = exprs(sCLLex)
-
RNA-seq获取表达矩阵
exprSet = assay(airway)
-
两种写包的流派
- 包装越好,越合适初学者用
- 尽量不用任何高级的东西,纯粹自己写
-
同样只需要表达矩阵和分组信息,另外,有专门的normalization方法
-
分析RNA-seq数据的三个包之一:DESeq2
13. 字符串操作
stringr包:vignette("stringr")
查看说明书
- grep(pattern,x) 在字符串向量x里搜索给定子字符串pattern,返回索引。
- nchar() 返回字符串长度
- paste() 拼接
- substr(x,start,stop)
- strsplit(x,split) 根据x中的字符串split把字符串x拆分成若干子字符串
- regexpr(pattern,text) 在字符串text中寻找pattern,返回与pattern匹配的第一个子字符串的起始字符索引
- gregexpr() 与regexpr类似,但会寻找匹配的所有子字符串
13.1. 正则表达式
- 一种通配符,用来描述一系列字符串的简略表达式。
-
?regex
查看相关帮助 - [au]表示含有字母a或u的字符串
grep("[au]",c())
- 句点'.'表示任意一个字符
grep("o.e",c())
网友评论