学习小组Day5笔记---猫爪草

作者: TeeM0猫爪草 | 来源:发表于2020-03-26 22:01 被阅读0次

    数据结构

    昨天安装R提及到了数据的类型
    https://www.jianshu.com/p/c16e9351f083

    今天继续学习花花老师的教程
    https://www.jianshu.com/p/5f93d48a63ac

    向量

    向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数 c()可用来
    创建向量。

    矩阵

    矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通
    过函数matrix创建矩阵。

    数组

    数组(array)与矩阵类似,但是维度可以大于2。数组可通过array函数创建,形式如下:

    myarray <- array (vector,dimensions,dimnames)
    

    其中vector包含了数组中的数据,·dimensions是一个数值型向量,给出了各个维度下标的最大值,
    dimnames是可选的、各维度名称标签的列表。

    数据框

    由于不同的列可以包含不同模式(数值型、字符型等)的数据,数据框的概念较矩阵来说更为一般。它与你通常在SAS、SPSS和Stata中看到的数据集类似。数据框将是你在R中最常处理的数据结构。数据框可通过函数data.frame()创建.

    列表

    列表(list)是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合。列表允许你整合若干(可能无关的)对象到单个对象名下。例如,某个列表中可能是若干向量、矩阵、数据框,甚至其他列表的组合。可以使用函数list()创建列表。

    数据的输入

    向R中导入数据的权威指南参见可在
    http://cran.r-project.org/doc/manuals/R-data.pdf下载的R Data Import/Export手册

    1.使用键盘输入数据

    也许输入数据最简单的方式就是使用键盘了。R中的函数edit()会自动调用一个允许手动输
    入数据的文本编辑器。具体步骤如下:
    (1) 创建一个空数据框(或矩阵),其中变量名和变量的模式需与理想中的最终数据集一致;
    (2) 针对这个数据对象调用文本编辑器,输入你的数据,并将结果保存回此数据对象中。

    假设创建一个名为mydata的数据框,它含有三个变量:
    age(数值型)gender(字符型)weight(数值型)
    然后你将调用文本编辑器,输入数据,最后保存结果。

    mydata <- data.frame(age=numeric(0),
          gender=character(0), weight=numeric(0))
    mydata <- edit(mydata)
    

    2.从带分隔符的文本文件导入数据

    使用R语言的时候,如果是少量数据,不妨使用c()或其他函数进行创建;但是对于大量数据,最好还是先通过其他更方便的软件创建数据文件,然后使用R读入这个文件。
    R语言中读取外部文件的最基本函数是read.table(),
    先说read.table()
    再讲专门用来读csv的read.csv()
    可以使用read.table()从带分隔符的文本文件中导入数据。此函数可读入一个表格格式的文件并将其保存为一个数据框。
    敲入?read.table命令,就看到了关于数据输入函数的说明。

    read.table(file, header = FALSE, sep = "", quote = "\"'",
               dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
               row.names, col.names, as.is = !stringsAsFactors,
               na.strings = "NA", colClasses = NA, nrows = -1,
               skip = 0, check.names = TRUE, fill = !blank.lines.skip,
               strip.white = FALSE, blank.lines.skip = TRUE,
               comment.char = "#",
               allowEscapes = FALSE, flush = FALSE,
               stringsAsFactors = default.stringsAsFactors(),
               fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
    
    read.csv(file, header = TRUE, sep = ",", quote = "\"",
             dec = ".", fill = TRUE, comment.char = "", ...)
    
    read.csv2(file, header = TRUE, sep = ";", quote = "\"",
              dec = ",", fill = TRUE, comment.char = "", ...)
    
    read.delim(file, header = TRUE, sep = "\t", quote = "\"",
               dec = ".", fill = TRUE, comment.char = "", ...)
    
    read.delim2(file, header = TRUE, sep = "\t", quote = "\"",
                dec = ",", fill = TRUE, comment.char = "", ...)
    

    以老师给的 "huahua.txt","doudou.txt"

    1.读取本地数据

    read.table(file = "huahua.txt",sep = "\t",header =T) #读取文件,分隔符为Tab,有表头 
    a<-read.table(file = "huahua.txt",sep = "\t",header =T)#把这个数据框赋给一个变量a 
    

    header 是一个表明首行是否包含了变量名的逻辑值。sep用来指定分隔数据的分隔符。

    2.设置行名和列名

    X<-read.csv('doudou.txt')
    colnames(X)
    rownames(X)
    colnames(X)[1]<-"bioplanet"
    X<-read.csv(file = "huahua.txt",sep = "\t",header =T,row.names=1)
    
      ```  read.csv```的用法
    
    read.csv(file, header = TRUE, sep = ",",quote="\"", dec=".",
    fill = TRUE,comment.char="")
    

    csv就是逗号分割的意思,当然sep必须是逗号。header也是默认有标题的。fill是默认填充的,即遇到行不相等的情况,空白域自动添加既定值。

    从当前工作目录中读入了一个名为X<-read.csv('doudou.txt')从文件的第一行取得了各变量名称,将变量1指定为行标识符,最后将结果保存到了名为huahua的数据集中,row.names的意思是修改第一列为行名,参数sep允许你导入那些使用逗号以外的符号来分隔行内数据的文件,
    可以使用sep="\t"读取以制表符分隔的文件,
    这参数的默认值为sep="",即表示分隔符可为一个或多个空格、制表符、换行符或回车符。

    3.数据框的导出

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

    4.保存与重新加载

    save.image(file="bioinfoplanet.RData")#保存当前所有变量
    save(frame1,file="frame1.RData")#保存其中一个变量
    load (frame1.RData)#使用时的加载命令
    

    5.提取元素

    - 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$列名#也可以提取列
    

    X是指的一个变量名,实际应用要懂得替换成相应的数据。

    6.直接使用数据框中的变量

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

    实际上,你跑完会发现数据框名a在代码中重复出现。

    解决:
    方法1:attach
    将数据框名添加到搜索环境中:attach(a),作图时就只需输入列名(连$都不用了)。

    attach(a)
    plot(case,values)
    

    做完后将a删除出搜索环境detach(a)
    局限性:两个以上数据框的列名有冲突时,同时attach会报错。

    方法2:with

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

    相关文章

      网友评论

        本文标题:学习小组Day5笔记---猫爪草

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