数据结构
1.向量
1.1.区分标量和向量
- 元素,是指数字或者字符串等,根据元素可区分两个词
- 标量:一个元素组成的变量
如1(一个数字),"fish"(一个字符串,字符串在使用时要加引号) - 向量:多个元素组成的变量(一个向量是一排有序排列的元素)
如c(1,2,3)(依次排列的三个数字),c("fish","is","studying")(依次排列的三个字符串)
1.2.从向量中提取元素
1.2.1.根据元素位置
- x[4] x第4个元素
- x[-4] 排除法,除了第4个元素之外剩余的元素
- [2:4] 第2到4个元素
- [-(2:4)] 除了第2-4个元素
- [c(1,5)] 第1个和第5个元素
1.2.2.根据值
- x[x==10] 等于10的元素
- x[x<0]
- x[x %in% c(1,2,5)] 存在于向量c(1,2,5)中的元素
2.数据框
2.1.准备工作
先用文本文档输入数据框的内容
将文本文档保存在工作目录下(很重要,不然会报错!)
2.2.读取本地数据
两种命令
-
read.table(file = "huahua.txt",sep = "\t",header = T)
这种命令会在命令框中显示出文本文档的数据框 -
a<-read.table(file = "huahua.txt",sep = "\t",header = T)
即将文本文档里的数据框赋值给a
环境框中出现被赋值的a,双击
在此对话框中出现了文本文档中的数据框
命令解读
read.table(file = "huahua.txt",sep = "\t",header = T)
读取本地数据框(这个文件叫"huahua.txt",tsv 文件是用制表符分隔的,表示将数据的第一行作为标题)
- sep 是函数的形式参数,多数情况下, sep 参数用来指定字符的分隔符号。
csv 文件是用逗号分隔的,故而 sep = ","
tsv 文件是用制表符分隔的,故而 sep = "\t"
常用的分隔符还有空格 sep = " "
分隔符是任意的,可根据具体情况指定的。
在输入的时候,原内容是用什么符号分隔的,sep就要保持一致,否则可能无法正确读取。 -
header = T表示将数据的第一行作为标题
看看两者对比
2.3.数据框的导出
-
write.table(X,file = "yu.txt",sep = ",",quote=F)
命令解读,导出一个数据框(X,文件名为"yu.txt",分隔符改为逗号,字符串不加双引号)
2.4.变量的保存与重新加载
这次没有处理完的数据下次想接着用的话就要保存和重新加载,保存的格式是RData
- save.image(file="bioinfoplanet.RData") 保存当前所有变量
- save(X,file="test.RData") 保存其中一个变量
- load("test.RData")再次使用RData时的加载命令
2.4.设置行名和列名
- X<-read.csv('doudou.txt') 将doudou的数据框赋值给X
- colnames(X) 查看列名
- rownames(X) 查看行名,默认值的行名就是行号,1.2.3.4...
- colnames(X)[1]<-"bioplanet" 有的公司返回数据,左上角第一格为空,R会自动补为x,用这个命令来修改
-
X<-read.csv(file = "huahua.txt",sep = " ",header =T,row.names=1)#最后row.names的意思是修改第一列为行名
如果不设置第一列为行名,则默认行名为1,2,3,4,5,
设置第一列为行名,则变成这样子
2.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$列名 也可以提取列
save(X,file="test.RData")这句代码如果报错X not found,是为什么,应该怎么解决?
是因为X是大写的原因吗?