生信技能树-数据挖掘week1 2/4
2021-01-09 本文已影响0人
Caster_xiao
感谢生信技能树小洁老师
数据框、矩阵、列表
向量(vector)
一维,数据类型是相同的。长度相同,数据类型相同的向量可以组成矩阵
cbind(x1,x2,x3) #x1,x2,x3必须是长度相同,数据类型相同的向量
矩阵(matrix)
二维,长度相同,数据类型相同的向量
一个matrix
数据框(data.frame)
长度相同,数据类型可以不同
一个data.frame
列表(list)
长度可有不同,数据类型可以不同,没有行和列的概念,可以有多级元素
一个list
数据框扩展
新建或读取数据框
df <- data.frame(gene = paste0("gene",1:3),
sam = paste0("sample",1:3),
exp = c(32,34,45))
df2 <- read.csv("gene.csv")
数据框属性描述
dim(df) #有多少行、多少列
nrow(df)
ncol(df)
rownames(df)
colnames(df)
#(1)行数较多的数据框可截取前/后几行查看
iris
head(iris) #默认取前6行
head(iris,3)
tail(iris)
#(2)行列数都多的数据框可取前几行前几列查看
iris[1:3,1:3]
#(3) 查看每一列的数据类型和具体内容
str(df)
str(iris)
数据框取子集
#4.数据框取子集
df[2,2]
df[2,]
df[,"gene"]
df[,c('gene','exp')]
df$exp #exp为列名
数据框修改
关键理解行名和列名也是一个向量
#只修改某一行的名
rownames(df)[2]="x"
Merge
merge函数可以连接两个表格
tmp =merge(test1,test2,by="name")#test1和test2中都有name列,并且该列有相同的元素
merge(test1,test3,by.x = "name",by.y = "NAME")#test1中的name列和test2中的NAME列相同
列表
列表取子集
l <- list(m=matrix(1:9, nrow = 3),
df=data.frame(gene = paste0("gene",1:3),
sam = paste0("sample",1:3),
exp = c(32,34,45)),
x=c(1,3,5))
l
l[[2]]
l$df
给元素起名字
#补充:元素的名字
#(1)向量
x=1:10
names(x)=letters[1:10] #仅仅是起名字,x的元素不会变
> x
a b c d e f g h i j
1 2 3 4 5 6 7 8 9 10
> x["a"]
a
1
Tips
na.omit(df) #删除数据框中含NA的行,该行所有数据均被删除!
#删除一个
rm(l)
#删除多个
rm(df,m)
#删除全部
rm(list = ls())
m
t(m)#矩阵转置
as.data.frame(m)
转换和倒置