RMVMR
RMVMR is being tidied in lockstep with MVMR, the package it wraps
A side-by-side editorial comparison of clinify and units — release velocity, themes, recent moves, and the top alternatives to consider.
Clinical-table typesetting for R, closing the gap between R output and regulatory Word documents
clinify renders clinical trial tables into Word documents through {officer}, aiming at the layout conventions regulatory submissions expect. 0.4.0 is the current CRAN release and folds in an unreleased 0.3.1. The recent work is almost entirely about header and spacing control: which adjacent header cells merge, where the rule under a spanner starts and stops, and how much vertical space sits above, below and between header rows and the table body.
units reaches 1.0 by rewriting its parser and accepting the breakage that comes with it.
units attaches physical units to R vectors on top of the udunits2 library, covering arithmetic, conversion and ggplot2 scales. Version 1.0-0 replaced the unit-expression tokenizer so numbers are consistently treated as prefixes, and expressions like ml/min/1.73m^2 now parse the way physiologists write them. Printing follows NIST conventions, and 1.0-1 is a fix pass over memory handling and parser edge cases.
clinify renders clinical trial tables into Word documents through {officer}, aiming at the layout conventions regulatory submissions expect. 0.4.0 is the current CRAN release and folds in an unreleased 0.3.1. The recent work is almost entirely about header and spacing control: which adjacent header cells merge, where the rule under a spanner starts and stops, and how much vertical space sits above, below and between header rows and the table body.
The package is moving from producing a correct table toward producing one that survives an organisation's house style. 0.4.0's additions are all written to hold under a customised `clinify_table_default()` — `clin_spanner_rule()` draws after the default styling function so it persists when a house style clears the borders it started from, and takes an `officer::fp_border()` or `FALSE` so a style can decline the rule entirely. The earlier 0.3.0 line did the structural work, introducing `clindoc()` document objects that accept multiple tables plus automatic pagination.
Expect continued refinement of layout primitives that follow the table rather than fixed column numbers, since both new 0.4.0 functions were built specifically to track spanners and headers as a layout changes. The entries do not indicate a move beyond Word output.
units attaches physical units to R vectors on top of the udunits2 library, covering arithmetic, conversion and ggplot2 scales. Version 1.0-0 replaced the unit-expression tokenizer so numbers are consistently treated as prefixes, and expressions like ml/min/1.73m^2 now parse the way physiologists write them. Printing follows NIST conventions, and 1.0-1 is a fix pass over memory handling and parser edge cases.
The long 0.8-x run was accretion — ggplot2 scales absorbed from ggforce, ud_convert(), matrix methods, steady performance work — while known parsing defects stayed in place. The 1.0 release finally traded backwards compatibility for correct parsing, and 1.0-1's pointer-wrapping and exception-propagation work suggests the C++ glue is being hardened behind it. Fixes cluster at the udunits2 boundary, which remains the main source of surprises.
Expect continued patch releases against udunits2 quirks and the new tokenizer's fallout rather than new surface area, with the ggplot2 integration and conversion helpers already in place.
Other Analytics products tracked by Sparkpulse, ranked by recent ship velocity. Each card links to a full editorial trajectory and lets you pivot into a head-to-head comparison with either clinify or units.
RMVMR is being tidied in lockstep with MVMR, the package it wraps
geoarrow tracks the GeoArrow spec and otherwise just keeps compiling
n2khab keeps retracting interpretations of habitat data it can't actually support
tidypolars is grinding toward complete dplyr coverage, one supported function at a time
OneSampleMR found that argument order in a formula was silently changing its estimates
bpbounds found the same swapped-cell bug twice and clamped its bounds back into range
See all clinify alternatives → · See all units alternatives →
Latest ship moves from both products, interleaved chronologically. ⚡ = editorial spark.
They serve adjacent needs but don't currently overlap on shipped themes. clinify is currently shipping more aggressively (velocity 2.5 vs 0.0), with 0 editorial sparks in the last 30 days against 0. See the at-a-glance table above for a side-by-side breakdown of velocity, recent sparks, and editorial themes.
Sparkpulse doesn't pick a winner — we score release velocity, not feature parity. clinify is currently shipping more aggressively (velocity 2.5 vs 0.0), with 0 editorial sparks in the last 30 days against 0. For your specific use case, the alternatives sections above list other Analytics products to evaluate alongside.
Top clinify alternatives in Analytics are ranked by recent ship velocity. Browse the "clinify alternatives" section above for the current picks, or visit /alternatives/clinify-r for the full list with editorial commentary on each.
Top units alternatives in Analytics are ranked by recent ship velocity. Browse the "units alternatives" section above for the current picks, or visit /alternatives/units-r for the full list with editorial commentary on each.