在做GEO数据挖掘时,有一步操作是整合表达矩阵,即多个探针对应一个基因的情况下,只保留在所有样本里面平均表达量最大的那个探针。
tmp <- by(exprSet,ids$symbol,
function(x) rownames(x)[which.max(rowMeans(x))])
一开始不是很理解,所以去找了by函数的例子,如下。
类比了一下可以看出:
这个操作首先是根据symbol对exprSet进行分类;然后对同一类数据计算其行平均值;最后找出平均值最大的行,取其行名。
> library(stats)
# 看一下warpbreaks数据集的结构
> head(warpbreaks)
breaks wool tension
1 26 A L
2 30 A L
3 54 A L
4 25 A L
5 70 A L
6 52 A L
> table(warpbreaks$wool)
A B
27 27
> table(warpbreaks$tension)
L M H
18 18 18
# 可以看到by是根据tension的分类进行操作的
> by(warpbreaks[, 1:2], warpbreaks[,"tension"], summary)
warpbreaks[, "tension"]: L
breaks wool
Min. :14.00 A:9
1st Qu.:26.00 B:9
Median :29.50
Mean :36.39
3rd Qu.:49.25
Max. :70.00
-----------------------------------------------------------------
warpbreaks[, "tension"]: M
breaks wool
Min.