現在、私は特定のイベントに関する情報を含む大きなデータフレームを通過するプロジェクトに取り組んでいます。これらのイベントでは、ボールの平均速度を計算することに興味があります。これを行う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){
...
}
あなたは空のデータフレームをスキップするifelseを使用できるの行数を確認してください –
問題の別の解決方法は次のとおりです。https://stackoverflow.com/questions/45493545/can-i-use-any-and-next-to-get-rid-of-empty-data-frames-in-r – ginko