用R中的置换测试实现简单的评分函数

时间:2013-12-15 17:05:55

标签: r

我是R的新手,我想计算生物学中一堆基因的特定分数。 有人可以帮我实现吗? : - )

我有以下两个向量:

vector 1: (0.01,0.02,0.04,0.5,0.9,0.002,0.07,0.008)
vector 2: (1,0,0,1,0,0,0,0)

vector 2显示特定集合中<{1}}元素的成员资格 c

我想实现一个评分函数,它将执行以下步骤:

1)将vector 1vector 1作为输入。

2)对vector 2的值进行排序,然后将vector 1与相应的vector 2

排序

3)它遍历排序的vector 1,如果vector 1的元素i,排序的vector 1的相应元素 1 ,然后分数应增加vector 2, 否则它应该减少(m-l)

m = l的长度

l = vector 1

中的非零元素数量

4)最后对vector 2vectors 1进行排列并重新计算第3步的得分。排列应保留{{1}中vector 2元素的真实成员资格}。例如:vector 1:(10,7,4),vector 2:(0,0,1),在一种可能的排列后:vector 1 :( 4,7,10), vector 2 :( 1,0,0)

这是我的尝试:

vector 1

但我无法根据vector2(a)

vector1<- c(0.01,0.02,0.04,0.5,0.9,0.002,0.07,0.008) vector2<- c(1,0,0,1,0,0,0,0) m<-length(vector1) l<-nnzero(vector2, na.counted = NA) score=0 score_function<-function (a,b){ a<-sort(a,decreasing = T) for (i in a){ if (b[i]==1) { score= + m-1 } else{ score= score-l } } score } (向量2)进行排序

1 个答案:

答案 0 :(得分:0)

如果要按另一个向量排序,请使用order()作为“[”:

的索引
> vector1<- c(0.01,0.02,0.04,0.5,0.9,0.002,0.07,0.008)
> 
>             vector2<- c(1,0,0,1,0,0,0,0)
> vector2[ order(vector1) ]
[1] 0 0 1 0 0 0 1 0