介绍apply()
apply 处理的是矩阵或者数据框的行或者列
apply(X, MARGIN, FUN, …)
其中X为一个数组;MARGIN为一个向量(表示要将函数FUN应用到X的行还是列),
若为1表示取行,为2表示取列,为c(1,2)表示行、列都计算。
截取数据几列
load(file = "data/brca.Rdata")
ma <- exprSet[,5:9]
## 按行操作
apply(ma,1, sum)
rowSums(ma)
identical(apply(ma,1, sum),rowSums(ma))
## 按列操作
apply(ma,2, mean)
colMeans(ma)
apply实战中的作用
去掉表达值一致的基因
load(file = "data/apply_var.Rdata")
test <- rt[,1:10]
dd <- rt[,-c(1,2)]
sum(apply(dd,2,var)==0)
dd1 <- dd[,apply(dd,2,var)!=0] #保留表达值不一致的基因
#看看表达值一致的基因
dd2=dd[,apply(dd,2,var)==0]
2.批量转换
rm(list = ls())
load(file = "data/expreSet.Rdata")
## 注意,学会str的用法
str(expreSet)
test <- expreSet[,2]
head(test)
[1] 7.24559 6.82711 4.39977 9.48025 4.54734 6.80701
31333 Levels: 2.71059 2.72014 2.73927 2.76276 ... 14.5467
#可看出是因子水平
直接转换为数字不行
#正确做法
as.numeric(as.character(test))
## 两次批量操作
dd1 <- apply(expreSet,2,as.character)
dd2 <- apply(dd1,2,as.numeric)
dd3 <- as.data.frame(dd2)
## 注意,学会str的用法
str(dd3)
网友评论