美文网首页
2021-03-04生信技能树-生信入门D3

2021-03-04生信技能树-生信入门D3

作者: 超级可爱的懂事长鸭 | 来源:发表于2021-03-05 11:45 被阅读0次

    生信技能树2021生信入门线上课笔记,需要结合课程讲解服用

    数据结构

    1)向量-一个维度

    > x=sample(1:100,28)
    > x
     [1] 46 59 43 10 18 61 95 72 92 32 52  5 49  9 12 20
    [17]  7 54 34 23 80 58 66 67 88 26 76 44
    

    2)矩阵-两个维度,里面的向量要长度相同,数据类型相同

    > matrix(x,nrow=7)#byrow按行排
         [,1] [,2] [,3] [,4]
    [1,]   46   72   12   58
    [2,]   59   92   20   66
    [3,]   43   32    7   67
    [4,]   10   52   54   88
    [5,]   18    5   34   26
    [6,]   61   49   23   76
    [7,]   95    9   80   44
    

    3)数据框-二维,长度相同、数据类型可以不同的向量按列组合(作图时常用的数据类型)

    > y1=letters[1:7]
    > y2=sample(1:100,7)
    > y3=sample(1:10,7)
    > data.frame(y1,y2,y3)
      y1 y2 y3
    1  a 32  2
    2  b 13  5
    3  c  8  9
    4  d 46  1
    5  e  1  4
    6  f 95  8
    7  g 76  3
    
    > a = 1:30
    > a
     [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16
    [17] 17 18 19 20 21 22 23 24 25 26 27 28 29 30
    > dim(a) = c(5,6)#将向量转化为数据框,添加维度
    > a
         [,1] [,2] [,3] [,4] [,5] [,6]
    [1,]    1    6   11   16   21   26
    [2,]    2    7   12   17   22   27
    [3,]    3    8   13   18   23   28
    [4,]    4    9   14   19   24   29
    [5,]    5   10   15   20   25   30
    

    4)列表-长度可以不同,数据类型可以不同,没有行列的概念,可以有多级元素,列表可以无限嵌套

    1.随机抽样

    sample(1:100,7) #从1到100中随机抽取7个,无放回
    [1] 51 53 57 21 60 84 41
    
    > sample(1:60,61,replace = T)#放回
     [1] 22  2 38 34 29 57 44  5 37 51 23 26  7 32 58 21
    [17] 55 30 38 28  6 28 38 22 44 41 25  9 35 34  7 24
    [33] 29 19 17 56 11 39 10 44 22 23 52 46 36 20 21 19
    [49] 36 40 24 29 44 12 59 43 29 32 56 41 57
    
    > set.seed(100)#让模拟结果能够可重复出现
    > sample(1:60,6,replace = T)
    [1] 10 55 38 48 51 25
    
    rm(list = ls())#清空环境
    options(stringsAsFactors = F)#避免把数据框里的数据类型转化为因子
    

    3.数据框来源
    (1)在R中新建(本质是向量按列组合)
    (2)由已有数据转换或处理得到
    (3)从文件中读取

    df2 <- read.csv("gene.csv")
    df2
    

    (4)内置数据集(不需要赋值也可以使用的变量)

    4.数据框属性描述

    dim(df)#几行几列
    nrow(df)#行数
    ncol(df)#列数
    
    rownames(df)
    colnames(df)
    
    head(df)#默认取6行
    head(df,3)#看前3行
    
    df[1:3,1:3]#看前3行前3列;不经过赋值,就只是输出看看
    
    > class(iris[1])#取第一列,仍为数据框
    [1] "data.frame"
    
    str(df)#查看每一列的数据类型和具体内容
    
    na.omit(df)#删除含有缺失值的行
    
    

    5.数据框取子集(左边是行,右边是列,哪边空着就哪边全选;中括号里的逗号表示维度的分割)

    df[2,2]
    df[2,]
    df[,2]
    df[c(1,3),1:2]
    
    #根据‘名字’提取自己
    df[,"gene"]
    df[,c('gene','exp')]
    
    df[,-ncol(df)]#选取除了最后一列的其他列
    
    df$exp  #取列,按tab键补齐;$后是不存在的列名,就是新增加一列
    mean(df$exp)
    
    1. 数据框修改:取子集$或[ ],再重新赋值向量
      运行错了的代码不可以撤销,但可以覆盖
    7.练习题

    提取test(数据框)中,最后一列值为versicolor或setosa的行,组成一个新的数据框,赋值给test2。

    test2 = test[test$Species %in% c("versicolor","setosa"),]
    #用$取最后一列species,用%in%判断最后一列中是否包含versicolor或setosa,范围值为T或者F,【】取范围值为T的行
    
    test2 = test[test$Species!="virginica",]
    #!为非,否定;反向取
    

    Tips

    %in%返回的是T或者F,长度与前面的向量相等
    match返回的是后面向量的下标,如果没有出现,就返回NA

    > a=sample(1:100,7);a
    [1] 58  1 90 84 39 70 16
    > b=letters[1:3];b
    [1] "a" "b" "c"
    > c=c(58,86,84,16);c
    [1] 58 86 84 16
    > a%in%c
    [1]  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE
    > match(a,b)
    [1] NA NA NA NA NA NA NA
    > match(a,c)
    [1]  1 NA NA  3 NA NA  4
    

    数据框列的顺序错乱,如何重排?https://mp.weixin.qq.com/s/rA92iZS8HUiuwlyrPirHdA

    提升参考:R语言中的排序,集合运算,reshape,以及merge总结 http://www.bio-info-trainee.com/1071.html

    9.数据框连接

    cbind#按列连接,行数相同
    rbind#按行连接,列数相同
    merge(test1,test2,by='name')#根据列名,相同内容合并
    merge(x=test1,y=test3,by.x='name',by.y='NAME')#R语言中严格区分大小写
    

    10.矩阵的转置和转换

    > m <- matrix(1:9, nrow = 3)#生成矩阵
    > colnames(m) <- c("a","b","c") #改列名
    > m
         a b c
    [1,] 1 4 7
    [2,] 2 5 8
    [3,] 3 6 9
    > t(m)#转置
      [,1] [,2] [,3]
    a    1    2    3
    b    4    5    6
    c    7    8    9
    > as.data.frame(m)#转换
      a b c
    1 1 4 7
    2 2 5 8
    3 3 6 9
    

    11.元素命名names( )
    可以根据名字取子集
    向量、数据框、列表通用
    用简单的函数包含两种信息

    相关文章

      网友评论

          本文标题:2021-03-04生信技能树-生信入门D3

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