数据框、矩阵与列表

R语言中,数据存储依赖于变量,而变量根据维度又有不同的形式。最为常见的即为向量形式,形式为一维。如:

a=c(1,2,3,4)

如果针对的是二维的数据形式,如读取表格的数据,则需要数据框、矩阵与列表的形式。

1.数据框

数据框,frame,是多种列向量的组合,要求每列数据一致

新建数据框的方法如下:

R=data.frame(number=paste0('a',1:6),celltype=A$V2,Group)
#A$V2,Group是定义过的向量,当没有=时,直接以变量名作列名

 

读取数据框的方法:

df2 <- read.csv("gene.csv")

1.1取子集

 需注意,不要跟向量中的取子集混淆。

若x为向量:

x[2]
x[c(1,2)]
x[1:3]
x[x!=1]

即,x[{\vec{a}}]都可以取出子集

若x为数据框,我们则需要两个向量来取出子集,用“,”隔开,即x[{\vec{a}},{\vec{c}}]

#4.数据框取子集
df1$score  #删掉score,按tab键试试
#$和Excel一样,表示锁定
mean(df1$score)

## 按坐标
df1[2,2]
df1[2,]#仍然是frame
df1[,2]#降级成向量了
df1[c(1,3),1:2]

## 按名字,更易读
df1[,"gene"]
df1[,c('gene','change')]

也可通过逻辑值取子集

1.2数据框的修改

基本同向量,但修改形式需要两个向量指引,或指定列向量

需注意,也可有增加列向量,或改行名列名的操作。

#5.数据框修改

#改一个格
df1[3,3] <- 5
df1
#改一整列
df1$score <- c(12,23,50,2)     
df1
#?增加一列
df1$p.value <- c(0.01,0.02,0.07,0.05) 
df1
#删除第2列,在矩阵中也通用
df1[,2]

#改行名和列名
rownames(df1) <- c("r1","r2","r3","r4")
#只修改某一行/列的名
colnames(df1)[2] <- "CHANGE"

1.3数据框的连接merge

示例代码:

#6.两个数据框的连接
test1 <- data.frame(name = c('jimmy','nicker','Damon','Sophie'), 
                    blood_type = c("A","B","O","AB"))
test1
test2 <- data.frame(name = c('Damon','jimmy','nicker','tony'),
                    group = c("group1","group1","group2","group2"),
                    vision = c(4.2,4.3,4.9,4.5))
test2

test3 <- data.frame(NAME = c('Damon','jimmy','nicker','tony'),
                    weight = c(140,145,110,138))
test3
merge(test1,test2,by="name")
merge(test1,test3,by.x = "name",by.y = "NAME")

2.1矩阵

基本同数据框

##### 矩阵和列表
m <- matrix(1:9, nrow = 3)
colnames(m) <- c("a","b","c") #加列名
m
m[2,]
m[,1]
m[2,3]
m[2:3,1:2]
m
t(m)#转置
as.data.frame(m)#转变为数据框

3.1列表

#列表,放了两个矩阵
x <- list(m1 = matrix(1:9, nrow = 3),
          m2 = matrix(2:9, nrow = 2))
x

x[[1]]#列表取子集,要两个[]
x$m1

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值