数据结构
数据框
矩阵
列表
1 Vector 向量—一维
sample(1:100,7) #不放回抽样
#[1] 44 38 65 80 91 59 58
2 矩阵—二维,所有列的数据类型相同,两个维度(行数和列数)
matrix(sample(1:100,28), nrow = 4)
2.1矩阵新建和取子集
m <- matrix(1:9, nrow = 3)

colnames(m) <- c(LETTERS[1:3])

2.2 矩阵的转置和转换
t(m)

2.3 转换为数据框
as.data.frame(m)
3 数据框,长度相同,数据类型可以不相同
3.1 新建数据框 (本质是向量按列组合)
df <- data.frame(gene = paste0("gene",1:20),
sam = paste0("sample",1:20),
exp = sample(1:100,20))
3.2 .数据框属性描述
1.维度(有几行几列)
dim(df)
- 行名/列名
colnames(df)
rownames(df)
3.3 .数据框取/去除 -(前面加入一个减号) 子集(一个、一行、一列、多行多列)
3.31 --坐标 ; 中括号里的逗号,表示维度的分割
df[行号,列号]
3.32 根据行名或列名
df[,c("gene","sam")]
df[,-3]


3.33 提取列的常用操作
能对向量的操作都是可以对提取的列进行操作的

3.4 数据框修改 --- 取子集$或[] +赋值操作
df$exp <- c(sample(1:50,20))
#能对向量进行的计算和统计,都能对df$exp做
修改数据框的行名和列名
#改全部行名
rownames(df)
#改一个行名
#修改第二列的行名,就是修改行名这个向量的第二个元素
rownames(df)[2]
3.5 数据框进阶
(1)行数较多的数据框可截取前/后几行查看
head(iris,n=10)
(2)行列数都多的数据框可取前几行前几列查看
iris[1:10,1:10]
(3) 查看每一列的数据类型和具体内容
str(df)
(4)去除含有缺失值的行:
na.omit(df)
(5)两个表格的连接
cbind #按列连接,行数相同
rbind #按行连接,列数相同
可以按照共同的列名来进行连接
merge(df1,df2, by.x = "df1NAME", by.y = "df2name")
4 列表
4.1 列表新建和取子集
li <- list(m=matrix(1:15,nrow=5),
df=data.frame(gene=paste0("gene",1:3),sam = paste0("sample",1:3),exp=sample(1:20,3)),
x=c(1,3,2))

取子集
li[[2]]#尽量使用这个
li$df
5 删除变量
删除一个rm(l)
删除多个rm(df,m)
删除全部rm(list = ls())
清空控制台ctrl+l
网友评论