R函数-sweep完成标准化

2020-02-23  本文已影响0人  新欣enjoy

既然熟知apply函数,那么也该了解sweep函数了。相比于apply函数,sweep的操作性虽然没有前者自定义函数运算的灵活,但是在复合计算上相对灵活。

参考原文

sweep示例
对矩阵test每一行都减去对应行号

> sweep(test,1,c(1,2,3),"-")
     [,1] [,2] [,3] [,4]
[1,]    0    1    2    3
[2,]    3    4    5    6
[3,]    6    7    8    9

sweep标准化
z-score标准化计算公式:(表达量-均值)/方差

# 行为基因,列为样本,现在对基因进行标准化
standardize <- function(x) {
rowmean <- apply(x, 1, mean)
rowsd <- apply(x, 1, sd)  
rv <- sweep(x, 1, rowmean,"-")  #表达量-均值
rv <- sweep(rv, 1, rowsd, "/")  #再除以标准差
return(rv)
}

内置标准化函数为:scale,该函数要求列为基因,因此处理时根据需要进行转置操作。

参考原文中对apply函数的参数解释的比较详细,可参考。

上一篇 下一篇

猜你喜欢

热点阅读