美文网首页生信基础知识
B站R语言视频笔记

B站R语言视频笔记

作者: 大吉岭猹 | 来源:发表于2019-03-30 12:30 被阅读9次

    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

    相关文章

      网友评论

        本文标题:B站R语言视频笔记

        本文链接:https://www.haomeiwen.com/subject/zwpjbqtx.html