美文网首页
【R语言学习】生信人应该这样学R语言--学习笔记(1)

【R语言学习】生信人应该这样学R语言--学习笔记(1)

作者: 你在想些什么呢 | 来源:发表于2020-03-28 11:38 被阅读0次

    资料及代码均来自生信技能树团队,感谢~

    相关数据及习题集

    学习笔记整理

    1. .libPaths() #查找安装包路径

    2. 创建字符串向量:a<-LETTERS, a<-letters[1:10]

    3. substr("abcde",1,4) #substr()用法 [1] "abcd"

    4. dim()的用法:

      a<-1:10
      dim(a)<-c(2,5)
      pheatmap::pheatmap(a)
      
    5. 注意检查数据类型是否正确:class()mode()typeof()str()

    6. 判断、改变变量类型:.is.*(),.as.*()

    7. Code中有批量注释按钮:Code->Comment/Uncomment lines

    8. lapply(d,length) #lapply()的用法,对d中每个元素都length一下

    9. 选取变量时grep()、grepl()的用法:

      > a 
        V1 V2 V3 V4 V5
      1  1  5  5  7  9
      2  2  4  6  8 10
      > index1<-grep("8",a$V4) #grep()的用法
      > index2<-grepl("8",a$V4)    #grepl()的用法
      > b1<-a[index1,]
      > b1
        V1 V2 V3 V4 V5
      2  2  4  6  8 10
      > b2<-a[index2,]
      > b2
        V1 V2 V3 V4 V5
      2  2  4  6  8 10
      
    10. list中提取元素的小技巧,[]与[[]]的区别:[]取到的仍然是list, [[]]才能取到元素。即list[1]得到第一列表,list[[1]]得到元素。

    11. 读取文件:read.table(" ",comment.char="!",header=T,sep="\t") ,可以按Tab键选取文件

    12. 设定行名:rownames(b)=b[,1];

      去掉某一列:d<-d[,-1] #去掉d的第1列

      去掉行名:write.csv(b,"*.csv",row.names=F)

    13. save(b, file = "b_input.Rdata")
      load("b_input.Rdata")
      
    14. sort(a$v1)
      sort(a$v1)[1]
      sort(a$v1,decreasing = T)[1]    #降序排列
      #取最大最小值
      max(a$v1)
      min(a$v1)   
      #取四分位数+中位数
      fivenum(a$v1)
      #去掉变量值<5000的元素
      a$v1< 5000
      table(a$v1 < 5000)
      b <- a[a$v1 < 5000,]
      
    15. 选取阈值的时候可以先画个箱型图看一下数据分布情况,比如boxplot(a$Mbases~a$Assay_type)

    16. 取平均值:

    #方法1
    mean(b[1,])
    mean(as.numeric(b[1,]))
    #方法2
    rowMeans(b)
    #方法3 for循环
    for (i in 1:nrow(b)) {
      print(mean(as.numeric(b[i,])))
    }
    #方法4 apply函数
    apply(b,1,function(x){  #第2个参数中,1代表行,2代表列
      mean(x)
    })
    apply(b,1,mean)
    
    1. 排序+热图:sort默认是从小到大排序.
    sort(apply(a,1,sd),decreasing = T)[1:50]    #取top50
    names=names(sort(apply(a,1,sd),decreasing = T)[1:50])   #获取探针名字
    pheatmap::pheatmap(a[names,])
    
    1. **Merge(): **d=merge(a,b,by.x = 'Sample_Name',by.y = 'Accession')

    2. > pheatmap(cbind(a1,a2))
      > pheatmap(cbind(a1,a2),cluster_cols = F)   #cluster_cols 是否依据颜色排序
      
    3. 给data.frame重命名(names(),paste()),并画出简单的热图:

      a1<-matrix(rnorm(100),5,20)
      a2<-matrix(rnorm(100)+2,5,20)
      a3<-cbind(a1,a2)
      a3<-as.data.frame(a3)
      names(a3)
      ##paste()的用法
      names(a3)<-c(paste("a1",1:20,sep="_"),paste("a2",1:20,sep="_"))
      library(pheatmap)
      pheatmap(a3)
      
    4. strsplit()的用法

      #“."是通配符,要用[]括起来
      > strsplit("ENSG00000000003.13",split = "[.]")   
      [[1]]
      [1] "ENSG00000000003" "13"  
      
    5. Library stringr

      str_split(fruits, " and ")  #返回list
      str_split(fruits, " and ", simplify = TRUE) #返回matrix
      
    6. 转换基因ID:

      >a<-read.table("ensembl.txt")
      #strsplit("ENSG00000000003.13",split = "[.]")
      #strsplit("ENSG00000000003.13",split = "[.]")[[1]][1]
      >library(stringr)
      >str_split(a$V1,"[[.]]",simplify = T)[,1]  
      [1] "ENSG00000000003" "ENSG00000000005" "ENSG00000000419" "ENSG00000000457" "ENSG00000000460"
      [6] "ENSG00000000938"
      >a$ensembl_id<-str_split(a$V1,"[[.]]",simplify = T)[,1]  #a中增加了ensemble_id那一列
      
      #安装org.Hs.eg.db(详情见上一篇学习笔记) 
      
      library(org.Hs.eg.db)
      g2s<-toTable(org.Hs.egSYMBOL)
      g2e<-toTable(org.Hs.egENSEMBL)
      b<-merge(a,g2e,by="ensembl_id",all.x=TRUE)
      c<-merge(b,g2s,by="gene_id",all.x=TRUE)
      
      table(c$ensembl_id)[table(c$ensembl_id)>1]  #查找重复出现的基因
      c<-c[!duplicated(c$V1),]
      c<-c[match(a$V1,c$V1),] #按照a中V1的顺序给c排序
      
      write.csv(c,"geneID2symbol.csv")
      

    相关文章

      网友评论

          本文标题:【R语言学习】生信人应该这样学R语言--学习笔记(1)

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