我有以下简单的代码,我面对以下错误,有人可以帮我搞清楚吗?它基本上应该使用两个向量a和b作为输入来计算得分:
Error in if (b[i] == 1) { : argument is of length zero
我的代码是:
require("Matrix")
# input vectors
a<-c(0.01,0.02,0.09,0.81,0.54,0.04,0.05,0.11,0.44,0.08,0.03,0.06,0.07,0.22,0.21,0.34,0.77,0.89,0.45,0.13,0.32,0.42,0.21,0.73,0.66,0.88)
b<-c(0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0)
#order the singificance vector together with pathway vector with increasing P-value
sort(a, decreasing=F)
b[order(a,decreasing =F)]
GSEA<-function(a,b){
m=length(a)
l=nnzero(b)
score<-c()
for (i in a){
if(b[i]==1){
score= + (m-l)
}else{score=score-l}
}
}
total<-c()
total.x<-c(1:m)
total.y<-score
答案 0 :(得分:2)
当您说if(b[i]==1)
时,您尝试使用非整数数值作为提取索引。
您可能需要for(i in seq_along(a))
而不是for(i in a)
。
例如见:
> if((1:3)[.2]==1) 'hello world'
Error in if ((1:3)[0.2] == 1) "hello world" : argument is of length zero