while中出错:缺少值需要TRUE / FALSE

时间:2013-11-25 10:55:39

标签: r error-handling while-loop

我是R的新人,我陷入了一个愚蠢的错误。虽然我发现了一些解决我问题的问题但我无法解决。

ww <- waveMC_list[[5]]
sampling=44100
thresh=10

timer.output <- timer(ww, f=sampling, threshold=thresh,envt="abs",ksmooth=kernel("daniell",100))


i=0
min.length=0.05                    # minimum length of segment
segmts=length(timer.output[[4]])   # total amount of segments to evaluate
segments <- list()                 # output of valid segments
starts=timer.output[[4]]           # starting times
ends=timer.output[[5]]             # ending times



for(i in 1:segmts)
{
  if(i <= segmts)
  {
  while(starts[i] <= ends[i]) #print(TRUE)
    {
    if((ends[i]-starts[i])>min.length)
      {
       segments[[i]] <- env(WaveMC(cutw(ww, f=44100, from= starts[i], to=ends[i],plot=F), bit= 16, samp.rate=44100)
                            , f=44100, ksmooth=kernel("daniell",90),plot=F)
       print(paste('check', i, sep=' '))
       print(segmts)
          #env("ACAWAVEFILE", f=44100, ksmooth=kernel("daniell",90)) 
      }   
       i=i+1
    }
  }
}

Error in while (starts[i] <= ends[i]) { : 

缺少需要TRUE / FALSE的值

1 个答案:

答案 0 :(得分:2)

错误表示if条件评估为NA。当任一操作数为NA时,就会发生这种情况。检查输入向量以获取它们包含的值。


旧的回复,仍然相关,但会产生不同的错误消息:

错误表示您的if条件是空向量。它为什么空?好吧,因为这部分:

(ends[i]-starts[i])

endsstarts都是元素:

starts=timer.output[[4]]           # starting times
ends=timer.output[[5]]             # ending times

当然,ends[i]starts[i]只返回i==1的元素和任何其他值的空向量。