0

さまざまな雨イベントに番号を付けようとしています! 一定期間降雨がなかった場合 (time.steps.event.end)、新しいイベントが開始されます (新しい番号が取得されます)。しかし、どういうわけかRはエラーメッセージを出します。面白いのは、測定値の短いリスト (同じ形式) で同じコードが機能することです。参考までに:Rは常に、1577809回の測定値のうちi = 1577739でエラーを返します。

これは私のコード(の不完全な部分)です:

 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

誰でも私を助けることができますか?

4

1 に答える 1

3

The error is telling you that you are trying to compare two things, but one of them is missing.

Here is a more succinct, reproducible example

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

Maybe you could specifically check for NAs like this

while(!any(is.na(x[3:4])) && any(x[3:4] > 0)) print(TRUE)
于 2013-09-29T13:36:35.403 に答える