2016-07-13 13 views
0

現在、私は特定のイベントに関する情報を含む大きなデータフレームを通過するプロジェクトに取り組んでいます。これらのイベントでは、ボールの平均速度を計算することに興味があります。これを行うAnything私は最初に特定のイベントからの情報だけを含むデータフレームを取得するためにデータフレームをサブセット化するforループを使用しています。その後、そのイベントの平均ボールスピードを計算し、どのチームがボールを持っているかを決定します。今では、大規模なデータフレームにイベントがないことがあり、そのイベントに基づいてイベントをサブセット化すると、空のデータフレームが返されるという問題が発生しました。この時点でmy forループはエラーになり、停止します。 ifステートメントを使用して、イベント番号が0よりも高いかどうかを確認したいと考えましたが、同じ結果が得られます。以下は、forループで使用しているコードを掲載したものです。forループ内の空のデータフレームをスキップするR

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 
    } 
} 

私が探しているのは、時々発生する空のデータフレームをスキップする方法です。たとえば、イベント1から30は完全に正常に動作しますが、何らかの理由で31が存在せず、サブセット化すると空のデータフレームが返されます。

ヘルプはずっとDF

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

あなたは空のデータフレームをスキップするifelseを使用できるの行数を確認してください –

+0

問題の別の解決方法は次のとおりです。https://stackoverflow.com/questions/45493545/can-i-use-any-and-next-to-get-rid-of-empty-data-frames-in-r – ginko

答えて

2

をいただければ幸いです。
+0

ありがとう、それはトリックでした。 – Bmaik

関連する問題