# 取score > 0的数据> df[df$score>0,]
gene change score
1 gene1 up 52 gene2 down 33 gene3 up 2
(3)按照坐标取子集
# 取第二行子集> df[2,]
gene change score
2 gene2 down 3# 取第二列子集> df[,2][1]"up""down""up""down"# 取第二行、第二列的元素> df[2,2][1]"down"# 取第一行的前两列元素,第二行的前两列元素> df[1:2,1:2]
gene change
1 gene1 up
2 gene2 down
# 取第一行的前两列元素,第三行的前两列元素
df[c(1,3),1:2]
gene change
1 gene1 up
3 gene3 up
(4)坐标未知的取法
># 取最后一列> df[,ncol(df)][1]532-1># 取除最后一列的其他所有列> df[,-ncol(df)]
gene change
1 gene1 up
2 gene2 down
3 gene3 up
4 gene4 down
1.4 数据框修改
(1)当行、列均存在时
>#修改一个元素> df[1,3]<-8> df
gene change score
1 gene1 up 82 gene2 down 33 gene3 up 24 gene4 down -1>#修改一列,每一列均为一个向量> df[,3]<- c(8,8,8,8)> df
gene change score
1 gene1 up 82 gene2 down 83 gene3 up 84 gene4 down 8> df$change <- c("up","up","up","down")> df
gene change score
1 gene1 up 82 gene2 up 83 gene3 up 84 gene4 down 8#修改一行,每一行为一个数据框> df[1,]<- data.frame("gene5","up",6)> df
gene change score
1 gene5 up 62 gene2 up 83 gene3 up 84 gene4 down 8
(2)当行、列不存在时
#修改一行,即新增加一行> df[5,]<- data.frame("gene5","up",6)> df
gene change score
1 gene5 up 62 gene2 up 83 gene3 up 84 gene4 down 85 gene5 up 6> df[8,]<- data.frame("gene5","up",6)> df
gene change score
1 gene5 up 62 gene2 up 83 gene3 up 84 gene4 down 85 gene5 up 66<NA><NA>NA7<NA><NA>NA8 gene5 up 6#修改一列,即新增加一列> df$p <- c(0.1,0.5,0.3,0.5)> df
gene change score p
1 gene5 up 60.12 gene2 up 80.53 gene3 up 80.34 gene4 down 80.5
(3)修改行、列名
#修改全部行名> rownames(df)<- paste0("r",1:4)> df
gene change score p
r1 gene5 up 60.1
r2 gene2 up 80.5
r3 gene3 up 80.3
r4 gene4 down 80.5#修改第三列的列名> colnames(df)[3]<-"sco"> df
gene change sco p
r1 gene5 up 60.1
r2 gene2 up 80.5
r3 gene3 up 80.3
r4 gene4 down 80.5
# 列名相同时,"name" 为表test1和表test2的共同列名> merge(test1,test2,by="name")
name bloodtype group
1 gala B 12 ming A 13 uzi B 24 xun O 2# 列名不同时,"name" 为表test1的列名, "NAME"为表test3的列名> merge(test1,test3,by.x="name",by.y="NAME")
name bloodtype group
1 gala B 12 ming A 13 uzi B 24 xun O 2
2. 矩阵
matrix 矩阵-二维,只允许一种数据类型。
2.1 新建矩阵
# 3 表示创建矩阵的行数> m = matrix(1:12,3)> m
[,1][,2][,3][,4][1,]14710[2,]25811[3,]36912
2.2 矩阵取子集
按照坐标来取子集,与数据框的操作相同。
> m = matrix(1:12,3)> m
[,1][,2][,3][,4][1,]14710[2,]25811[3,]36912>#取第二行> m[2,][1]25811>>#取第二列> m[,2][1]456>>#取第二行,第四列的元素> m[2,4][1]11>>#取第二、三行的二、三列元素> m[c(2,3),c(2,3)][,1][,2][1,]58[2,]69
2.3 矩阵转置和转换
(1)矩阵的转置
> m
[,1][,2][,3][,4][1,]14710[2,]25811[3,]36912# 转置> t(m)[,1][,2][,3][1,]123[2,]456[3,]789[4,]101112
(2)矩阵的转换
# 将矩阵转换为数据框> m = as.data.frame(m)> class(m)[1]"data.frame"
(3)矩阵行、列名修改
> m = matrix(1:12,3)# 修改行名> rownames(m)<-1:3# 修改列名> colnames(m)<- c("a","b","c","d")> m
a b c d
114710225811336912