美文网首页
R day1 -基本概念操作-2

R day1 -基本概念操作-2

作者: labrador1986 | 来源:发表于2018-12-09 00:47 被阅读0次

    万地高楼平地起,掌握基本的代码规律和逻辑思维非常重要

    每个基本的代码和函数不运行是200次以上,是谈不上掌握的

    基本开始运行代码

    rm(list=ls())
    options(stringsAsFactors = F)

    tips

    Tab键匹配补全
    head(b)取b的前6行,同样有tail()取末6行

    基本数据类型

    R 有四种基本数据类型,即数值型(numeric)、复数型(complex)、逻辑型(logical)、字符型(character),因子(factor)。
    numeric:就是数字【需要注意的是有的虽然看起来是数字,但是被定义成了character或者factor,需要用as.numeric转换】
    character:用单引号或者双引号包括起来的字符序列,一般我们称之为字符串。
    logical:逻辑型变量,即布尔值,表示“是”与“否”,“真”或“假”。
    逻辑型用 TRUE 表示真,FALSE 表示假。也可缩写为 T或者 F,
    但需要注意的是,T 和 F不是 R 的保留字,其含义可以被程序改变,因此最好是用 TRUE 和 FALSE,更加规范和安全。
    R中的比较运算和逻辑运算都可以产生逻辑型数据。比较运算包括 >,<,>=,<=,==,!=(大于,小于,大于等于,小于等于,等于,不等于)。
    逻辑运算包括 &,|,!(与、或、非)。

    > 2>3
    [1] FALSE
    > a=seq(1,20)
    > 8>a
     [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
    [17] FALSE FALSE FALSE FALSE
    

    factor:应该是最难理解的一个变量类型
    在R语言中,因子(factor)可以表示的是一个符号、一个编号或者一个等级,即,一个点。例如,人的个数可以是1,2,3,4......那么因子就包括,1,2,3,4.....
    还有统计量的水平的时候用到的高、中、低,也是因子,因为他是一个点。
    与之区别的向量,是一个连续性的值,例如,数值中有1,1.1,1.2......可以作为数值来计算,而因子则不可以。

    sex<-c("M","F","M","M","F")
    factor(sex)
    sex.factor<-as.factor(sex)
    #使用levels来取得因子中的水平
    levels(sex.factor)
    # [1] "F" "M"
    

    不太好理解,新手刚开始不太用的上,我现在也不太理解factor,应该是比character多了半个维度的感觉

    基本数据结构

    无论是数值型(numeric)、逻辑型(logical)、字符型(character),因子(factor)变量都需要用容易来存储,也就是数据结构
    R的对象由几种基本数据类型构成:
    向量(vector) :一维空间
    矩阵(matrix):二维空间,只可以存储数值变量,但是较少用到,
    数据框(dataframe):二维空间,可以存储numeric,logical,character,factor型变量,在实际分析工作中用到的最多
    数组(array):三维空间,但是极少用到,可以忽略
    列表(list):三维空间,可以由多个vactor/matrix/dataframe组成

    基本计算

    R中可以直接进行基本计算
    每一个英文单词都是一个函数
    基本所有的计算符号都可以在R中进行直接计算

    6+6
    6-6
    6*6
    6/6
    6^2
    log(6)
    mean()
    max()
    min(x)
    

    创建向量

    c( ) 是我们常用来创建向量的函数,c就是create,也可以理解为combind

    c("TP53","ERBB2","BRCA1")
    c(2,3,4)
    c(2:9)
    seq(1,3)#默认为整数1
    seq(1,3,by=0.5)
    a=c(3,4,5,6,7,8),等价于a=3:8或者a=c(3:8)或者a=seq(3,8)
    
    【R中没有唯一的解决代码方案,条条大路通罗马,找出规律,构建个人的思维习惯才是王道】

    rep就是replicate重复的意思

    rep(1,3)# 【1重复3次】
    rep(1:2,3) #【1和2,重复3次】
    rep("TP53",3)# 【TP53, 重复3次】
    rep(c("TP53","ERBB2","BRCA1"),each=3)#【每个向量重复3次】
    rep(c("TP53","ERBB2","BRCA1"),3)#【 重复3次】
    

    seq就是sequence序列

    seq(1,3)#默认为整数1 返回值为1,2,3
    seq(1,3,by=0.5) by是设定间隔值,返回值为1, 1.5, 2, 2.5, 3
    
    sort(a)#排序
    rev(a)#反向排序
    table(a)###每个变量的counts
    unique(a)####显示变量唯一的数目
    

    sort(a)#排序
    sort(a,decreasing = TRUE) #降序排序
    order()得到排列的小标用,返回的是每个变量在一维向量中的排序位置编号

    每个函数都有很多哑变量可以微调整,参考help文档说明,或者TAB键联想,每个调整参数之间以,分割

    判断向量类型

    在预算中如果报错,那就需要check元素类型是否不支持,as.xxxx函数可以帮助把数据变成指定类型或状况。
    class()查看数据类型
    str()查看数据结构
    dim()查看数据维度

    is.data.frame()返回TRUE or FALSE逻辑向量
    as.character()可以帮助把数据变成字符型数据(加双引号“”的变量)

    构建matrix

    a<-matrix(1:20,nrow = 4,ncol =5 )
    a<-matrix(1:20, 4,5 )
    a<-matrix(1:20, 4)
    #三者等同
    

    构建data.frame

    a<-data.frame(a=seq(1,5),b=seq(6,10))
    

    data.frame的行和列数目必须一致,并且行名不能重复,列名可以重复

    提取数据

    对于向量,由于是一维结构,可以直接a[3],取向量中第3个数值
    对于矩阵和数据框,由于是二维结构,需要指定二位结构
    a[2,3]取数据框中的第2行、第三列的数值

    data.frame默认是列为单位
    可以对列进行直接操作
    例如a是数据框变量
    mean(a[,1])、mean(a$1) 可以直接求a的第一列的均值
    但是mean(a[1,])却不可以直接求a的某一行的均值
    需要先转换后在计算
    mean(as.numeric(a[1,]))
    如果添加行,则将改变所有的列。如果重新赋值,可以将a改成数据框类型。如果没有重新赋值,则不改变a的类型。依次类推,还有as.xxx等系列函数

    对list进行操作

    list是三维结构,所以需要进行三维定位
    例如a是list变量
    a[1]则得到列表中的第一个列表,进行一次降维
    a[[1]] 得到第一元素,进行了二次降维
    有时候两种方法得到的结果看起来是一样的,可是使用class查看数据类型后发现,其实[[]]之后已经对数据进行了二次降级,变成了元素。

    数据框取索引

    通常我们想提取数据框中的指定行或者指定列
    一般有两种简单提取思维
    1)提取目标变量所在下标值(可以理解为坐标,例如第几行)
    举例
    a<-data.frame(sample=rep(c("tumor","sample"),4),age=seq(1:8))


    要求1,提取sample为tumor的数据

    我可以找到sample列=tumor的行号

    b<-a$sample=="tumor"
    

    注意==是逻辑判断符号,所以返回的是逻辑性变量


    image.png

    然后直接导入编辑变量

    tumorsample<-a[b,]
    
    image.png

    也可以一步代码

    tumorsample<-a[a$sample=='tumor',]
    
    a<-seq(1,100)
    a>2 #返回的是逻辑变量
    a[a>2]#返回的是向量变量,自动过滤掉FALSE变量
    

    体会下不同

    文件读取和保存

    read.table('文件名', header = T,sep = '\t' )
    read.csv('文件名', header = T )
    write.table(a,file = "aa")
    write.csv (a,file = "aa")

    重命名

    重命名行名
    rownames(b)<-
    colname(b)<-

    尚不完善,持续更新ing

    感谢jimmy和他的生信菜鸟团家族

    相关文章

      网友评论

          本文标题:R day1 -基本概念操作-2

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