SimtablR

3.1.1 patch release

Bug fixes

SimtablR 3.1.0

New features

Breaking changes

Downscale (September 2026)

SimtablR 3.1 narrows its surface to the core table, regression, diagnostic, and reporting workflow. None of these functions shipped in a CRAN release.

Earlier 3.1 changes

Compliance remediation and release infrastructure

Correctness and honest output

Error reporting

Statistical corrections

Export safety

Regression interoperability

Autocomplete is now RStudio-only

Default-resolution hardening

Extension and reproducibility infrastructure

set_summary() replaces the conflicting summarise() builder verb

Numeric-coded categorical variables are now auto-detected

SimtablR 3.0.0

SimtablR 3.0.0 is a major release and a deliberate clean break from the 2.x series. It reorganises the package around a single grammar of table specifications and immutable result objects, adds survival/Firth/E-value engines, a suite of workflow verbs, and aligns several statistical defaults with current epidemiological practice. See vignette("migration-3-0") for a full migration guide with the escape hatch for every changed default that has one (three of the changes are correctness fixes with no escape hatch by design).

Progressive advice display

Compact result printing

Breaking changes

Result classes were renamed

The p flag was reassigned

Aligned statistical defaults (numbers may move)

The defaults below changed; each has an escape hatch (except the correctness fixes, which have none by design), tabulated under “Your numbers may move” at the end of this section.

Deprecations

New engines and workflow verbs

Language and grammar

Statistical methods

Corrections

SimtablR 2.0.0

Major Changes

tb() Function

Overhauled tb() to return a structured list. The object inherits the S3 class vector c(“tb”, “simtab”). Matrices with attributes are no longer returned directly from the primary function loop. Ratio Schema Standardization: Renamed fields within the internal ratios data frame to lower_ci and upper_ci to establish strict compatibility with multivariable regression tables (regtab()). *Simplified Continuous Syntax: Enhanced var.type parsing to accept an unnamed scalar character string shorthand (e.g., var.type = “continuous”) and map it automatically to the main row variable.

New Features

Table Stacking (rbind.tb): Implemented the rbind.tb() S3 method to support the vertical stacking of discrete tb objects sharing the same column variables. Dual Export Modes: Expanded as.data.frame.tb() and as.data.frame.rbind_tb() to support a tidy toggle. tidy = FALSE (default) provides display-ready character strings for manuscripts, while tidy = TRUE returns unformatted numeric data frames optimized for ggplot2 workflows. RStudio Autocomplete Replacement: Integrated an unexported interactive completion replacement hook inside zzz.R using .rs.registerAutocompleteReplacement() to dynamically expose dataset column names inside RStudio console environments. Wald-Aligned Ratio Statistics: Upgraded unadjusted Prevalence Ratio (PR) and Odds Ratio (OR) calculations to compute Wald z-score p-values aligned directly alongside confidence intervals. Added new runtime educational message() notifications that fire automatically under specific conditions Added explicit registerS3method() entries for rbind, print, and as.data.frame generics within .onLoad() to guarantee stable dispatch across development environments, source routines, and unattached package builds.

Other changes

Fixed a vulnerability where common column names (like p or col) matching formatting flags were silently intercepted by the NSE symbol parser. Extracted all text formatting, cell stitching matrices, margin additions, and string template processing out of core workflows and isolated them within a unified internal builder called .build_display_matrix().