
Unnest ESPN CFB drive plays into a flat play-by-play table
Source:R/espn_cfb_game.R
espn_cfb_unnest_plays.RdTurn a espn_cfb_game_drives() result carrying a plays
list-column (produced with plays = "list") into the flat
one-row-per-play table – every play in the full espn_cfb_game_pbp()
schema with its drive-level columns carried alongside, prefixed drive_.
Value
A data frame with one row per play:
| col_name | types | description |
| drive_game_id | character | ESPN game identifier (drive-level column, drive_-prefixed). |
| drive_id | character | ESPN drive id the play belongs to (drive_-prefixed). |
| drive_result | character | Drive result code (drive_-prefixed; every drive-level column is carried with this prefix). |
| game_id | character | ESPN game identifier (play-level column). |
| play_id | character | ESPN play id. |
| ... | Every remaining espn_cfb_game_pbp() play column, plus any optional participant columns present in the embedded tibbles. |
Details
Pure transform – no HTTP. espn_cfb_unnest_plays() unnests the
plays list-column appended by espn_cfb_game_drives(..., plays = "list")
and carries every drive-level column alongside each play, prefixed
drive_ (e.g. drive_id, drive_result, drive_yards,
drive_start_yard_line) so it never collides with the play's own
columns. The result is identical in shape to
espn_cfb_game_drives(..., plays = "expand") – the same flat table, one
route via the plays argument, the other via this auxiliary function.
If drives does not carry a plays list-column the function aborts with
a message telling the caller to run
espn_cfb_game_drives(..., plays = "list") first.
See also
Other ESPN CFB Functions:
espn_cfb_award(),
espn_cfb_awards(),
espn_cfb_clear_cache(),
espn_cfb_coach(),
espn_cfb_coach_record(),
espn_cfb_coaches(),
espn_cfb_franchise(),
espn_cfb_franchises(),
espn_cfb_futures(),
espn_cfb_game_broadcasts(),
espn_cfb_game_drive_plays(),
espn_cfb_game_drives(),
espn_cfb_game_leaders(),
espn_cfb_game_odds(),
espn_cfb_game_pbp(),
espn_cfb_game_play(),
espn_cfb_game_player_box(),
espn_cfb_game_player_statistics(),
espn_cfb_game_powerindex(),
espn_cfb_game_predictor(),
espn_cfb_game_probabilities(),
espn_cfb_game_situation(),
espn_cfb_game_status(),
espn_cfb_game_team_leaders(),
espn_cfb_game_team_linescores(),
espn_cfb_game_team_records(),
espn_cfb_game_team_roster(),
espn_cfb_game_team_statistics(),
espn_cfb_game_teams(),
espn_cfb_groups(),
espn_cfb_pbp_v2(),
espn_cfb_player(),
espn_cfb_player_career_stats(),
espn_cfb_player_eventlog(),
espn_cfb_player_gamelog(),
espn_cfb_player_overview(),
espn_cfb_player_seasons(),
espn_cfb_player_splits(),
espn_cfb_player_stats_v3(),
espn_cfb_players(),
espn_cfb_position(),
espn_cfb_positions(),
espn_cfb_powerindex(),
espn_cfb_qbr(),
espn_cfb_rankings(),
espn_cfb_recruits(),
espn_cfb_season_info(),
espn_cfb_season_types(),
espn_cfb_season_weeks(),
espn_cfb_seasons(),
espn_cfb_standings(),
espn_cfb_team(),
espn_cfb_team_ats(),
espn_cfb_team_awards(),
espn_cfb_team_coaches(),
espn_cfb_team_events(),
espn_cfb_team_leaders(),
espn_cfb_team_powerindex(),
espn_cfb_team_ranks(),
espn_cfb_team_record(),
espn_cfb_team_roster(),
espn_cfb_team_schedule(),
espn_cfb_teams(),
espn_cfb_venue(),
espn_cfb_venues(),
espn_cfb_week_rankings()
Examples
# \donttest{
try(espn_cfb_unnest_plays(espn_cfb_game_drives(401628339,
plays = "list")))
#> ── Game drive plays (unnested) data from ESPN ──────────────── cfbfastR 2.3.0 ──
#> ℹ Data updated: 2026-06-09 07:58:16 UTC
#> # A tibble: 156 × 106
#> drive_game_id drive_drive_id drive_sequence_number drive_description
#> <chr> <chr> <chr> <chr>
#> 1 401628339 4016283391 1 3 plays, 6 yards, 2:27
#> 2 401628339 4016283391 1 3 plays, 6 yards, 2:27
#> 3 401628339 4016283391 1 3 plays, 6 yards, 2:27
#> 4 401628339 4016283391 1 3 plays, 6 yards, 2:27
#> 5 401628339 4016283391 1 3 plays, 6 yards, 2:27
#> 6 401628339 4016283391 1 3 plays, 6 yards, 2:27
#> 7 401628339 4016283392 2 1 play, 22 yards, 0:06
#> 8 401628339 4016283393 3 3 plays, 1 yard, 2:06
#> 9 401628339 4016283393 3 3 plays, 1 yard, 2:06
#> 10 401628339 4016283393 3 3 plays, 1 yard, 2:06
#> # ℹ 146 more rows
#> # ℹ 102 more variables: drive_team_id <chr>, drive_team_name <chr>,
#> # drive_team_abbreviation <chr>, drive_team_location <chr>,
#> # drive_team_display_name <chr>, drive_team_short_display_name <chr>,
#> # drive_team_nickname <chr>, drive_team_color <chr>,
#> # drive_team_alternate_color <chr>, drive_team_logo_href <chr>,
#> # drive_team_logo_dark_href <chr>, drive_end_team_id <chr>, …
# }