美文网首页
生信小操作(一)

生信小操作(一)

作者: 生命数据科学 | 来源:发表于2023-01-06 18:08 被阅读0次

    本系列主要定期集中记录一些实用的生信操作

    1. 第一列作为行名,构建数值矩阵

    假如我刚读取了一个表达谱矩阵gene_exp,第一列为基因名,其余列为基因表达量

    > gene_exp
      genes expression_1 expression_2
    1     a            1            3
    2     b            2            5
    3     c            1            3
    4     d            2            5
    5     e            1            3
    6     f            2            5
    > str(gene_exp) # 看看每列的数据类型
    'data.frame':   6 obs. of  3 variables:
     $ genes       : chr  "a" "b" "c" "d" ...
     $ expression_1: num  1 2 1 2 1 2
     $ expression_2: num  3 5 3 5 3 5
    

    然后就可以将第一列作为行名

    library(tibble)
    gene_exp<-column_to_rownames(.data=gene_exp,var ="genes") # var为第一列的列名
    

    如果有时候,从第二列开始是字符串型

    > str(gene_exp)
    'data.frame':   6 obs. of  3 variables:
     $ genes       : chr  "a" "b" "c" "d" ...
     $ expression_1: chr  "1" "2" "1" "2" ...
     $ expression_2: chr  "3" "5" "3" "5" ...
    

    也可以一次性将转变为数值型变量

    gene_exp[,c(2,ncol(gene_exp))] <- apply(gene_exp[,c(2,ncol(gene_exp))],MARGIN = 2,FUN = as.numeric)
    > str(gene_exp)
    'data.frame':   6 obs. of  3 variables:
     $ genes       : chr  "a" "b" "c" "d" ...
     $ expression_1: num  1 2 1 2 1 2
     $ expression_2: num  3 5 3 5 3 5
    

    其中:
    gene_exp[,c(2,ncol(gene_exp))]为需要转换的区域,这里表示第2n列,n为最大列数
    MARGIN = 1,表示处理行, = 2 表示处理列
    FUN,批量实现功能
    as.numeric,将其他类型变量转换为数值型变量

    2. 一句话解决重复基因求均值

    有时候,测序结果中会出现重复基因

    > gene_exp
      genes expression_1 expression_2
    1     a            1            3
    2     b            2            5
    3     c            1            3
    4     a            2            5
    5     b            1            3
    6     c            2            5
    

    这时候把第一列作为行名时会报错,因为行名不能有重复

    > gene_exp<-column_to_rownames(.data=gene_exp,var ="genes")
    Error in `.rowNamesDF<-`(x, value = value) : 
      duplicate 'row.names' are not allowed
    In addition: Warning message:
    non-unique values when setting 'row.names': ‘a’, ‘b’, ‘c’
    

    因此我们可以先对重复基因求均值,再将基因作为行名

    gene_exp <- aggregate(x = .~genes,data=gene_exp,FUN=mean)
    gene_exp <- column_to_rownames(.data=gene_exp,var ="genes")
    > gene_exp
      expression_1 expression_2
    a          1.5            4
    b          1.5            4
    c          1.5            4
    

    完美解决~
    一图看懂aggregate函数

    image

    3. bioconductor 设置镜像

    在安装bioconductor上面的包时,从国外库中下载速度比较慢,可以使用清华的镜像

    options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")
    

    本期内容到此结束,这个系列主要是将一些小技巧整理起来,方便后续使用,单独发太少,汇集3个发一期,大家在分析过程中遇到的一些报错也可以私信联系,解决后也能纳入素材,方便他人后续避坑

    感谢观看,如果有用还请点赞,关注!

    相关文章

      网友评论

          本文标题:生信小操作(一)

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