跳过R中for循环中的空数据帧

跳过R中for循环中的空数据帧,r,for-loop,dataframe,subset,R,For Loop,Dataframe,Subset,我目前正在从事一个项目,在这个项目中,我正在浏览一个包含某些事件信息的大型数据框架。在这些项目中,我对计算球的平均速度感兴趣。不管是谁做的,我都在使用一个for循环,它首先对数据帧进行子集运算,得到一个只包含某个事件信息的数据帧。之后,它计算该项目的平均球速,并确定哪个队拥有该球。现在我遇到了一个问题,有时一个事件不在我的大数据帧中,因此基于该事件对它进行子集设置会返回一个空数据帧。此时,我的for循环遇到错误并停止。我希望使用if语句查看事件数是否高于0会有所帮助,但它给出了相同的结果。下面是

我目前正在从事一个项目,在这个项目中,我正在浏览一个包含某些事件信息的大型数据框架。在这些项目中,我对计算球的平均速度感兴趣。不管是谁做的,我都在使用一个for循环,它首先对数据帧进行子集运算,得到一个只包含某个事件信息的数据帧。之后,它计算该项目的平均球速,并确定哪个队拥有该球。现在我遇到了一个问题,有时一个事件不在我的大数据帧中,因此基于该事件对它进行子集设置会返回一个空数据帧。此时,我的for循环遇到错误并停止。我希望使用if语句查看事件数是否高于0会有所帮助,但它给出了相同的结果。下面是我在for循环中使用的代码

    for(i in 1:484){
      df <- subset[which(subset$event.id == event), ]

      if(df$event.id >= 0){
        df <- df[rev(order(df$game_clock)),]

        distance <- travelDist(df$x_loc, df$y_loc)
        start.time <- max(df$game_clock)
        end.time <- min(df$game_clock)
        time <- start.time - end.time
        data.frame$speed.event[i] <- distance/time

        df$HOMEDESCRIPTION <- as.numeric(df$HOMEDESCRIPTION)
        df$VISITORDESCRIPTION <- as.numeric(df$VISITORDESCRIPTION)
        df[is.na(df)] <- 0

        if(df$HOMEDESCRIPTION[1] == 0){
           data.frame$team[i] <- "away"
           }else{
           data.frame$team[i] <- "home"
           }
     event <- event + 1

     }else{
      event <- event + 1 
     }
}
for(1:484中的i){
df=0){

df检查df的行数

if (nrow(df)>0){
...
}

您可以使用ifelse跳过空数据帧。下面是解决此问题的另一个解决方案: