отсутствующее значение там, где необходимо TRUE/FALSE --› в цикле while(any(loop)

Я пытаюсь пронумеровать различные дождевые события! каждое новое событие начинается (получает новый номер), если не было осадков в течение определенного периода времени (time.steps.event.end). Но почему-то R выдает мне сообщение об ошибке. Забавно, что работает тот же код, но с более коротким списком измерений (в том же формате). К вашему сведению: R всегда выдает ошибку i=1577739 из 1577809 измерений.

Это (ошибочная часть) моего кода:

 i=1
 rain.index=0
 finedata=rain.series.matrix[,3]

 while(i<(length(finedata)-time.steps.event.end+1)) { 
   if (finedata[i]==0)
     i=i+1 else {

  rain.index=rain.index+1

  rain.series.matrix[(i-max(durations)/20):i,2]=rain.index


  while(any(finedata[(i+1):(i+time.steps.event.end)]>0)) 
  {
    i=i+1
    rain.series.matrix[i,2]=rain.index

  }
  rain.series.matrix[(i+1):(i+time.steps.event.end),2]=rain.index
  i=i+1
}
}

Отображается следующая ошибка:

Error in while (any(finedata[(i + 1):(i + time.steps.event.end)] > 0,  : 
  missing value where TRUE/FALSE needed

Кто-нибудь может мне помочь?


person user2828408    schedule 29.09.2013    source источник
comment
Хотя мне нравится энтузиазм по поводу нумерации событий дождя, трудно дать конкретный ответ, потому что вы не предоставили достаточно данных/кода. См. stackoverflow. com/questions/5963269/   -  person GSee    schedule 29.09.2013


Ответы (1)


Ошибка говорит вам, что вы пытаетесь сравнить две вещи, но одна из них отсутствует.

Вот более краткий, воспроизводимый пример

x <- 1:2
x[3:4]
#[1] NA NA
while(any(x[3:4] > 0)) print(TRUE)
#Error in while (any(x[3:4] > 0)) print(TRUE) : 
#  missing value where TRUE/FALSE needed

Может быть, вы могли бы специально проверить такие NA

while(!any(is.na(x[3:4])) && any(x[3:4] > 0)) print(TRUE)
person GSee    schedule 29.09.2013