生信星球47期学习生信星球培训第四十七期

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

2020-03-26  本文已影响0人  TeeM0猫爪草

数据结构

昨天安装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
上一篇下一篇

猜你喜欢

热点阅读