B站R语言视频笔记

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())

最后,向大家隆重推荐生信技能树的一系列干货!

  1. 生信技能树全球公益巡讲:https://mp.weixin.qq.com/s/E9ykuIbc-2Ja9HOY0bn_6g
  2. B站公益74小时生信工程师教学视频合辑https://mp.weixin.qq.com/s/IyFK7l_WBAiUgqQi8O7Hxw
  3. 招学徒https://mp.weixin.qq.com/s/KgbilzXnFjbKKunuw7NVfw
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容