生信技能树-数据挖掘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)

转换和倒置
上一篇下一篇

猜你喜欢

热点阅读