Generic fetcher that takes an EFO table identifier (e.g. "6.5",
"1.7", "4.1") and returns the parsed contents in the standard
v0.4.0 schema. Use obr_efo_catalogue() to discover which tables
are available.
Arguments
- table_id
Character. The EFO table identifier, e.g.
"6.5","1.7","6.13". Seeobr_efo_catalogue()for the full list.- vintage
Optional EFO vintage label (e.g.
"October 2024"). IfNULL, uses any pin set viaobr_pin()or falls back to the latest live EFO.- refresh
Logical. If
TRUE, re-download even if a cached copy exists. Defaults toFALSE.
Value
An obr_tbl with the standard v0.4.0 schema columns
(period, period_type, series, metric_type, value, unit).
Returns NULL (with a warning) for cross-reference sheets.
Details
Internally, this function looks up table_id in the catalogue, fetches
the right workbook (Aggregates or Economy), dispatches to a layout-
specific parser, and tags every row with metric_type and unit
according to the catalogue's defaults plus per-row classification.
Coverage today: 17 fiscal Aggregates tables + 22 macro Economy tables.
Two of the Aggregates sheets, 6.11 (net debt year-on-year changes) and
6.15 (reconciliation of PSNCR and CGNCR), hold no data, only a pointer
to a table in the EFO report; for these get_efo_table() returns NULL
with a warning that quotes the pointer.
Headline functions get_efo_fiscal() and get_efo_economy() are kept
as thin wrappers over this dispatcher.
Examples
# \donttest{
op <- options(obr.cache_dir = tempdir())
try({
# Net borrowing components (same data as get_efo_fiscal())
get_efo_table("6.5")
# CPI category inflation by year
get_efo_table("1.19")
# Composition of public sector net debt
get_efo_table("6.13")
# Pin to a specific vintage
get_efo_table("6.5", vintage = "October 2024")
})
#> Waiting 4s for retry backoff ■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 2s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Warning: Could not resolve a current EFO Aggregates URL from 9 candidates.
#> ℹ Falling back to
#> <https://obr.uk/download/october-2026-economic-and-fiscal-outlook-detailed-forecast-tables-aggregates/>.
#> ! Returned data may be older than expected. Run with internet access, or pin a
#> vintage explicitly when that feature ships.
#> ℹ Downloading
#> efo_aggregates__october-2026-economic-and-fiscal-outlook-detailed-forecast-tables-aggregates.xlsx
#> from OBR...
#> Waiting 2s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■
#> Waiting 4s for retry backoff ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
#> Error : Failed to download
#> <https://obr.uk/download/october-2026-economic-and-fiscal-outlook-detailed-forecast-tables-aggregates/>.
#> ✖ HTTP 403 Forbidden.
options(op)
# }