首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果循环参数的长度为零,则for中出现错误

如果循环参数的长度为零,则for中出现错误
EN

Stack Overflow用户
提问于 2013-12-16 18:53:27
回答 1查看 678关注 0票数 0

我有以下简单的代码,并且我遇到了下面的错误,有人能帮我弄清楚吗?它基本上应该使用两个向量a和b作为输入来计算分数:

代码语言:javascript
复制
Error in if (b[i] == 1) { : argument is of length zero

我的代码是:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2013-12-16 18:58:11

当您说if(b[i]==1)时,您正在尝试使用非整数数值作为提取索引。

您可能需要for(i in seq_along(a))而不是for(i in a)

例如,请参阅:

代码语言:javascript
复制
> if((1:3)[.2]==1) 'hello world'
Error in if ((1:3)[0.2] == 1) "hello world" : argument is of length zero
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20609095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档