小编use*_*990的帖子

结合函数和for循环

我有不同组织的数据,如此

 tissueA tissueB tissueC
gene1    4.5 6.2 5.8
gene2    3.2 4.7 6.6
Run Code Online (Sandbox Code Playgroud)

我想计算一个汇总统计量

x = ? [1-log2(i,j)/log2(i,max)]/n-1
Run Code Online (Sandbox Code Playgroud)

其中n是组织的数量(这里是3),(i,max)是n个组织中基因i的最高值(即对于gene1,它是6.2).

因为我必须为每个基因的每个组织做这个计算(因为总和从j到n,并且j = 1),然后得到它的总和

我写了一个for循环

for (i in seq_along(x) {
my.max <- max(x[,i])
my.statistic <- (1-log2(x[,i]/log2[my.max])
my.sum <- sum(my.statistic)
my.answer <- my.sum/2 #(n-1=3-1=2)
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何为每一行应用这个for循环,通常我会编写一个函数并且只执行(apply,1,function(x))但是我不确定如何将for循环转换为函数.

例如,对于gene1的预期输出,它就是

(1-log2(4.5)/log2(6.2))/2 + (1-log2(5.8)/log2(6.2))/2 =0.1060983
Run Code Online (Sandbox Code Playgroud)

r bioinformatics apply plyr

7
推荐指数
2
解决办法
611
查看次数

标签 统计

apply ×1

bioinformatics ×1

plyr ×1

r ×1