【问题标题】:missing value where TRUE/FALSE needed --> in while(any( loop需要 TRUE/FALSE 的缺失值 --> 在 while(any( 循环
【发布时间】:2013-09-29 13:23:29
【问题描述】:

我正在尝试对不同的降雨事件进行编号!如果一段时间内没有降雨(time.steps.event.end),则每个新事件都会开始(获取一个新编号)。但不知何故,R 给了我一个错误消息。有趣的是,相同的代码可以工作,但测量值列表更短(格式相同)。供您参考:在 1577809 次测量中,R 总是给我 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

谁能帮帮我?

【问题讨论】:

标签: r while-loop any


【解决方案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)

【讨论】:

    猜你喜欢
    • 2016-11-06
    • 1970-01-01
    • 2013-12-10
    • 2019-03-07
    • 2016-07-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多