1.apply 处理矩阵或数据框
apply(X, MARGIN, FUN, …)
其中X是数据框/矩阵名;
MARGIN为1表示取行,为2表示取列,FUN是函数
test<- iris[,1:4]
head(test)
apply(test, 2, mean)
head(apply(test, 1, sum))
2.lapply(list, FUN, …)
# 对列表/向量中的每个元素(向量)实施相同的操作
test <- list(x = 36:33,
y = 32:35,
z = 30:27)
#返回值是列表,对列表中的每个元素(向量)求均值(试试方差var,分位数quantile)
lapply(test,mean)
class(lapply(test,mean))
x <- unlist(lapply(test,mean));x
class(x)
3.sapply 处理列表,简化结果,直接返回矩阵和向量
sapply(X, FUN, …) 注意和lapply的区别,返回值不一样
-------------------------练习------------------------------
##方差最大1000个基因名
x=names(tail(sort(apply(test,1,var)),1000))
##提取这1000个基因表达量
test[x,]
##画箱线图
boxplot(test[1,]~rep(c("a","b"),3))
##对这1000基因表达量画热图
pheatmap::pheatmap(test[x,],show_rownames = F)
参考资料:生信技能树-小洁老师
网友评论