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

Bma*_*aik 2 for-loop r subset dataframe

我目前正在处理一个项目,在该项目中我正在浏览一个包含有关某些事件的信息的大型数据框。在这些事件中,我对计算球的平均速度感兴趣。Anywho to do this 我使用了一个 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 
     }
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一种跳过有时会出现的空数据框的方法。例如,事件 1 到 30 工作得很好,但是由于某种原因,事件 31 不存在,并且在设置子集时它返回一个空数据框。

帮助将不胜感激

Geo*_*tas 5

检查df的行数

if (nrow(df)>0){
...
}
Run Code Online (Sandbox Code Playgroud)