Skip to contents

Turn 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_.

Usage

espn_cfb_unnest_plays(drives)

Arguments

drives

(data.frame required): a data frame produced by espn_cfb_game_drives(..., plays = "list") – i.e. carrying a plays list-column of full-schema play tibbles.

Value

A data frame with one row per play:

col_nametypesdescription
drive_game_idcharacterESPN game identifier (drive-level column, drive_-prefixed).
drive_idcharacterESPN drive id the play belongs to (drive_-prefixed).
drive_resultcharacterDrive result code (drive_-prefixed; every drive-level column is carried with this prefix).
game_idcharacterESPN game identifier (play-level column).
play_idcharacterESPN 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>, …
# }