Unified column rename mechanism: RSF periodically renames columns in their
exports (e.g., 2025–2026: "Score" → "Score 2025"/"Score 2026"). All such
renames now flow through a single, transparent override system
(inst/extdata/period3_column_overrides.csv + three validation/override
functions) instead of special-cased detection logic. This makes future RSF
format changes maintainable without code edits — just append a row to the
CSV. Includes three new safety net functions for per-column validation,
override loading, and mapping patching.
Improved encoding robustness: Each raw RSF CSV is now scanned per-file for encoding (UTF-8 vs. ISO-8859-1 inherited from RSF's silent 2025 switch), preventing mojibake that would otherwise propagate silently into RDS datasets. Detection happens at download time; data are converted to UTF-8 during cleaning.
detect_score_column() function (functionality moved to override
mechanism, making score renames no longer special).normalize_column_names() signature: dropped unused period and
year parameters. Function now does pure mechanical rename/reorder; all
period/year-specific logic moved to caller. This removes ~22 lines of code
and clarifies the API boundary.R CMD check output,
avoiding false suspicion of package issues during CRAN review.\dontrun{}, replacement of cat() with message(), removal
of package-relative path defaults from internal functions.ETL/update functions (download_rwb_data(), clean_rwb_single(),
clean_all_rwb_years(), combine_cleaned_periods(),
standardize_rwb_countries(), update_rwb_data(), and related internal
helpers) are no longer exported. They rely on a development checkout
(here::here() paths, git operations) and were never usable from an
installed copy of the package. The public API is now just the
rwb_standardized dataset. Use pressfreedom.data:::fun() if you still
need direct access.
zone now uses English region names instead of RSF's original French
labels, e.g. "MENA" -> "Middle East & North Africa",
"Afrique" -> "Africa". Update any code that filters or joins on the
old French values (see ?rwb_standardized for the full mapping). This
also fixes a recurring zone mojibake/encoding issue.
Fixed score_n_1 for 2023-2026 (720 rows), which was about 100x too
large (e.g. 9265 instead of 92.65) due to a missing decimal-scaling
step. It's now on the same 0-100 scale as score. Remove any manual
rescaling workaround for these years.
rwb_ naming convention (RSF vs. RWB) in
?rwb_standardized.README.md and
vignette("getting-started"); consolidated citation info into
inst/CITATION.\value tag to print.rwb_update()'s documentation and cited
the RSF web service in the Description: field, addressing CRAN
feedback on the initial 0.2.0 submission.\examples from the unexported helpers download_rwb_data(),
get_period(), and get_years_to_download() rather than exporting
them, eliminating the package's only \dontrun{} usage.download_rwb_data() now uses message() instead of unconditional
cat() for progress/summary output, so it can be suppressed with
suppressMessages()."inst/extdata",
here::here("data", "cleaned")) from download_rwb_data(),
get_years_to_download(), clean_rwb_single(),
clean_all_rwb_years(), combine_cleaned_periods(), and
standardize_rwb_countries(). These arguments are now required with no
default, so the functions never write to (or read from) a package or
home directory implicitly.pressfreedom Shiny app's logo.