我的while循环代码在R中有什么问题?

时间:2016-01-03 08:23:17

标签: r while-loop

我想在R中使用while循环。

我想重复循环,直到evt> 1和cpr> 0,但它不起作用。

work_f是生成数字的功能。

if((evt>1)&&(cpr>0)){
work<-work[order(work$z),]
obs<-c(1:length(work$z))
work<-cbind(work,obs)
  } else {
 while((evt>1)&&(cpr>0)) {
  j<-j+1
  seed<-settings*1000+h+j     

  work_f(studysize = studysize,beta=beta,cutpoint = cutpoint,settings = settigns,p=p,alpha = alpha)

  evt<-data.frame(ftable(work$event))
  evttr<-data.frame(evt=numeric(1),cpr=numeric(1),csr=numeric(1))
  if (p==0) {
    evttr$evt<-evt$Freq[1]; evttr$cpr<-evt$Freq[2]; evttr$csr<-0
  }else {
    evttr$evt<-evt$Freq[2]; evttr$cpr<-evt$Freq[3]; evttr$csr<-evt$Freq[1]
  }
  evttr[is.na(evttr)]<-0
  evt<-as.numeric(evttr$evt); cpr<-as.numeric(evttr$cpr)

  if((evt>1)&&(cpr>0)){
    work<-work[order(work$z),]
    obs<-c(1:length(work$z))
    work<-cbind(work,obs)
  }
 }
} 

怎么了?

1 个答案:

答案 0 :(得分:3)

很可能你的问题出在你的while循环的头部,因为它永远不会进入你的while循环。如果我删除了大部分代码,这就变得可见了

evt = 0
cpr = 0
if ((evt > 1) && (cpr > 0)) {
  cat("a")
} else {
  #due to the if (evt > 1) && (cpr > 0)==false
  #hence the loop is never entered
  while ((evt > 1) && (cpr > 0)) {
    cat("b")
  }
} 

我补充说,你复制了if-true体的代码。

if ((evt > 1) && (cpr > 0)) {
      work <- work[order(work$z),]
      obs <- c(1:length(work$z))
      work <- cbind(work,obs)
}

在循环结束时。我假设一旦你解决了上述问题,你可以重新考虑你的代码,这部分只发生一次。