美文网首页生信星球培训第八期
学习小组Day5笔记--胡莹

学习小组Day5笔记--胡莹

作者: 胡莹crystal | 来源:发表于2018-10-27 18:37 被阅读29次

    很抱歉今天的作业交的很晚,昨天的学习真的是搞得我头大,总是各种出错,找不出原因,最后很晚了才刚刚把内容练习了一遍,仍旧有出错的地方,还有很多命令自己还不理解,觉得自己很笨,又不好意思总是问老师弱智的问题,最后烦躁的关机睡觉了。今天仔细的把每一个函数、命令都搜索了一遍,汇总网上的解释进行学习,这才弄懂了自己出错的原因。一方面是自己不细心,犯少个括号、引号、弄混大小写、忘记更改工作目录等这些低级错误;另一方面自己没有理解函数的含义,也没有提前搜索学习,而是先照着教程运行,这样出错了自己也不明白是为什么。今天仔仔细细重新学了一遍,用押金扣除、小组倒数第一的代价换来了自己对主动搜索学习的重视。
    今天的笔记主要还是着重记录自己犯错的地方和觉得重要的知识点,其他的就简要略过。
    本节内容重点学习R语言中的两个数据类型---向量数据框 .

    向量

    关于向量,我觉得思维导图总结的已经很全面,因此把这部分的思维导图附上。

    向量
    Tips: %in%
    判断前面一个向量内的元素是否在后面一个向量中,返回布尔值。

    代码实例

    m <- c(1,3,13,1443,43,43,4,34,3,4,3)
    n <- c(1,13,11,1313,434,1)
    m %in% n
    [1] TRUE FALSE TRUE FALSE FALSE
    [6] FALSE FALSE FALSE FALSE FALSE
    [11] FALSE

    !m %in% n #取反操作
    [1] FALSE TRUE FALSE TRUE TRUE
    [6] TRUE TRUE TRUE TRUE TRUE
    [11] TRUE

    可以使用这个语法提取向量m中的值

    m[ m %in% n]
    [1] 1 13

    m[!m %in% n]
    [1] 3 1443 43 43 4 34 3
    [8] 4 3

    数据框

    准备工作

    • 将教程提供的实例数据放在RData文件夹下。
      我居然忘记了自己在安装R的时候建过一个RData文件夹,以至于在这一步瞎折腾了好久,大概昨晚真的是脑子进水了吧...
    • 查看一下自己的工作路径是否正确。
      我的工作路径是电脑默认的,并不是RData路径,刚开始不知道,报错找不出原因,特别感谢同组的天天同学提醒了我。
      getwd
      setwd

    读取本地数据

    这里重要的是要弄懂读取命令read.table()函数。

    • read.table函数详解

    read.table()函数是R最基本函数之一,主要用来读取矩形表格数据。

    read.table(file = "huahua.txt",sep = "\t",header =T)

    各参数的说明如下:

    (1)file
    file表示要读取的文件名,一个带分隔符的ASCII文本文件。
    file可以是绝对路径或者相对路径,如果file参数中给定的文件名不是绝对路径,则文件名是相对于当前R的工作目录给出的。
    Tips:使用file.choose(),弹出对话框,让你选择文件位置。


    file使用1
    file使用2

    该方法免去了记忆和书写文件路径的麻烦,特别是能够避免因数据文件位置移动带来的错误!例如:read.table(file.choose(),...)
    (2)sep
    分开数据的分隔符。默认sep="",即分隔符为空白。
    read.table()函数可以将1个或多个空格、tab制表符("\t")、换行符或回车符作为分隔符。
    (3)header
    一个逻辑值(TRUE or FALSE)。用于确定数据文件中第一行是不是标题。默认F(FALSE的简写),即认为数据文件没有标题。如果header设置为TRUE,则要求第一行要比数据列的数量少一列。

    读取本地数据

    设置行名和列名

    • read.csv
      读取csv格式的数据文件,是read.table函数的包装,同样接受read.table所有参数。
      和read.table有所不同的,是read.csv的默认参数有别。
      header---参数默认为TRUE
      sep---默认是逗号
    • colnames
      colnames主要是对矩阵或数据框进行列命名

    代码实例:

    X<-read.csv('doudou.txt') #在示例数据里有doudou.txt 注意这里的变量X是一个数据框
    X
    X1 X2
    1 A 1
    2 B NA
    3 C NA
    4 D 3
    5 E NA
    colnames(X)#查看列名
    [1] "X1" "X2"
    rownames(X)#查看行名,默认行名为行号1,2,3,......
    [1] "1" "2" "3" "4" "5"
    colnames(X)[1]<-"bioplanet"#有的公司返回数据,左上角第一格为空,R会自动补为x,用这个命令将X修改为bioplanet
    X
    bioplanet X2
    1 A 1
    2 B NA
    3 C NA
    4 D 3
    5 E NA
    X <- read.csv(file = "huahua.txt",sep = "\t",row.names = 1) #最后row.names的意思是修改第一列为行名
    X
    X2
    A 1
    B NA
    C NA
    D 3
    E NA

    数据框的导出

    write.table(X,file = "yu.txt",sep = ",",quote = F) #分隔符改为逗号,字符串不加双引号(默认格式带由双引号)

    命令运行后查看RData文件夹下面,会发现多了一个yu.txt文件。

    • write.table函数
      R语言中用于导出数据的函数
      语法
      write.table (x, file ="", sep ="", row.names =TRUE, col.names =TRUE, quote =TRUE)
      参数说明
      x:需要导出的数据
      file:导出的文件路径
      row.names:是否导出行序号,默认为TRUE,也就是导出行序号
      col.names:是否导出列名,默认为TRUE,也就是导出列名
      sep:分隔符,默认为空格(” “)
      quote:字符串是否使用引号表示,默认为TRUE,也就是使用引号表示

    变量的保存与重新加载

    这次没有处理完的数据下次想接着用怎么办?--学会保存和重新加载。保存的格式是RData。---摘自生信星球

    save.image(file="bioinfoplanet.RData")#保存当前所有变量

    运行完之后查看RData文件夹,会发现多了bioinfoplanet.RData文件。


    保存所有变量

    save(frame1,file="frame1.RData")#保存其中一个变量

    X变量保存

    load("frame1.RData")#再次使用RData时的加载命令

    加载X变量

    提取元素

    • X[x,y]#第x行第y列
    • X[x,]#第x行
    • X[,y]#第y列(横着写,这是不够懒也不够优秀却能存在的写法)
    • X[y] #第y列(竖着写,这是懒惰又优秀的写法)
    • X[a:b]#第a列到第b列
    • X[c(a,b)]#第a列和第b列
    • X$列名#也可以提取列(优秀写法,而且这个命令还优秀到不用写括号的地步,并且支持Tab自动补全哦,不过只能提取一列)

    代码实例:

    x[1,1]
    [1] 1
    x[2,]
    [1] NA
    x[,2]
    Error in [.data.frame(x, , 2) : undefined columns selected
    x[,1]
    [1] 1 NA NA 3 NA
    x[1]
    X2
    A 1
    B NA
    C NA
    D 3
    E NA
    x[1:2]
    Error in [.data.frame(x, 1:2) : undefined columns selected
    x[2:1]
    Error in [.data.frame(x, 2:1) : undefined columns selected
    x[1:1]
    X2
    A 1
    B NA
    C NA
    D 3
    E NA
    x[c(0,1)]
    X2
    A 1
    B NA
    C NA
    D 3
    E NA
    x$X2
    [1] 1 NA NA 3 NA

    直接使用数据框中的变量

    我们的目标:提取某两列作散点图

    • 方法1

    c <-data.frame(case=paste("S",c(1:50)),values=runif(50))
    plot(case,values)

    效果:


    缺点:数据框名a在代码中重复出现,不够简洁高效。
    -方法2---attach

    attach(c)
    plot(case,values)
    detach(c) #将a删除搜索环境

    缺点:当数据框中的列与内存中已有的对象同名时,就会产生冲突报错,因此,attach后必需接detach,将a删除搜索环境。

    -方法3---with

    with(c,{
    + plot(case,values)
    x<<-summary(values) #求和并赋值给x,<<的意思是作为全局变量,y也就是出了with循环仍有效。
    })
    x #运行完后打印x

    代码示例

    with(c,{
    + plot(case,values)
    x<<-summary(values)
    })
    Error in +plot(case, values) : invalid argument to unary operator #此处报错,还没搞清楚原因......
    x
    X1 X2
    1 A 1
    2 B NA
    3 C NA
    4 D 3
    5 E NA

    对比attach
    attach当数据框中的列与内存中已有的对象同名时,就会产生冲突报错,因此,attach后必接detach。
    用with,则是封闭在数据框的环境中进行运算,不会与外在环境中的对象相冲突,因此,没有以上的隐患。

    总结:使用数据框中变量这块我可能还是没有搞懂,需要再研究研究。崩溃...


    R-初学数据类型

    相关文章

      网友评论

        本文标题:学习小组Day5笔记--胡莹

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