Implements 12-team CFP straight seeding with a season-keyed automatic-qualifier policy:
autobid = "2026"(default, current rule): the ACC, Big 12, Big Ten and SEC champions are in regardless of ranking; the highest-ranked team from the Group of 6 (American, Conference USA, MAC, Mountain West, Pac-12, Sun Belt) is in whether or not it won its conference; and Notre Dame is in if ranked inside the topplayoff_seeds.autobid = "2025": the 5 highest-ranked conference champions are guaranteed inclusion (the 2024-2025 rule).
Under both policies seeds are assigned strictly in ranking order (champions are not bumped up; straight seeding, 2025+).
Usage
cfb_playoff_seeds(
standings,
rankings = NULL,
playoff_seeds = 12L,
autobid = c("2026", "2025")
)Arguments
- standings
A standings table as returned by
cfb_standings()(requires at leastteam,conference,conf_champ,win_pct,sov,sos,pd, and asimorseasonid column).- rankings
Optional data frame with columns
teamandrank(1 = best), e.g. the CFP committee rankings. Teams missing fromrankingsare treated as unranked and ordered behind all ranked teams. WhenNULL, a documented fallback ordering is used instead: teams are ordered by win percentage, then strength of victory, strength of schedule, point differential, and team name.- playoff_seeds
Number of playoff spots (default 12).
- autobid
Automatic-qualifier policy,
"2026"(default) or"2025"- see Description.
Value
The standings input (all its columns unchanged; see
cfb_standings() for the column table) with one column added:
| Column | Type | Description |
seed | integer | CFP seed in straight-seeding order; NA for teams outside the playoff field. |
Details
Under autobid = "2025", if there are fewer than 5 conference champions
all champions are guaranteed (capped at playoff_seeds). Under either
policy a guaranteed team ranked outside the top playoff_seeds
displaces the lowest-ranked at-large team and is seeded by its rank
order within the field. Conference names are matched against both cfbd
and short spellings (e.g. "American Athletic" / "American").
See also
cfb_standings(), cfb_simulations(),
the nflseedR original: https://nflseedr.com
Examples
# \donttest{
games <- read.csv(system.file("extdata", "toy_games.csv", package = "cfbseedR"))
teams <- read.csv(system.file("extdata", "toy_teams.csv", package = "cfbseedR"))
standings <- cfb_standings(games, teams, tiebreaker_depth = "POINTS",
verbosity = "NONE")
rankings <- data.frame(team = c("B1", "I1", "A1", "A3"), rank = 1:4)
seeded <- cfb_playoff_seeds(standings, rankings = rankings, playoff_seeds = 4)
seeded[!is.na(seeded$seed), c("team", "seed")]
#> # A tibble: 4 × 2
#> team seed
#> <chr> <int>
#> 1 A1 3
#> 2 A3 4
#> 3 B1 1
#> 4 I1 2
# }