我是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的值
答案 0 :(得分:2)
错误表示if
条件评估为NA
。当任一操作数为NA
时,就会发生这种情况。检查输入向量以获取它们包含的值。
旧的回复,仍然相关,但会产生不同的错误消息:
错误表示您的if
条件是空向量。它为什么空?好吧,因为这部分:
(ends[i]-starts[i])
ends
和starts
都是单元素:
starts=timer.output[[4]] # starting times
ends=timer.output[[5]] # ending times
当然,ends[i]
和starts[i]
只返回i==1
的元素和任何其他值的空向量。