我是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 1
和vector 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 2
和vectors 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)进行排序
答案 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