The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
This is the first CRAN submission version of easytable.
Compared with the earlier GitHub and Zenodo 2.1.0 release, this version includes minor bug fixes, documentation updates, and CRAN-requested formatting changes.
easytable(), format_word(), and
format_latex().Removed markdown output mode from
easytable(). Supported outputs are now "word"
(default) and "latex".
Renamed CSV export argument:
csvexport.csv (must end with .csv)export.word argument (must end with .docx).
easytable(m1, m2, export.word = "mytable.docx")* to reduce table width
(e.g., x1 * on one line, x2 on the next
line).README.md around a clearer user promise: easy
to use, easy to read.penguins-tutorial.developer-roadmap.DESIGN_PHILOSOPHY.mdAI_NOTES.md_pkgdown.yml navigation and article
structure.LICENSE.md so the MIT license text is
human-readable in the repository.tests/README.md with a deterministic, CI-safe
testing protocol.tests/run-tests.R with a committed
core profile.tests/testthat/helper-testing-profiles.R for
environment-aware test skipping.tests/testthat/test-design-invariants.R to lock
key table invariants.validate_output_format() to provide friendly,
explicit output-format validation.Direct model interface: New
easytable() function accepts model objects directly through
dots, like easytable(m1, m2, m3). This provides a more
intuitive API for multiple model input.
Default model naming: Model columns are now
automatically named “Model 1”, “Model 2”, etc. when using the new
easytable() interface.
Custom model names: Added
model.names parameter to specify custom column names for
models. Example:
easytable(m1, m2, model.names = c("Baseline", "Full"))
Enhanced term label formatting: Term labels are now automatically formatted for improved readability:
digital_confidence:low)var1 * var2)var:L1
for .Q, var:L2 for .L)fin.prud for
financial_prudence)Fixed markdown output: Resolved issue with stray
vertical bars appearing inside table cells. Markdown tables now use
<br> for line breaks within cells, ensuring proper
rendering.
Improved markdown formatting: Ensured coefficient formatting (stars, standard errors) is consistent across markdown and LaTeX output formats.
The original easy_table() function with list-based
interface remains fully functional for backward compatibility.
All existing code using
easy_table(list(Model1 = m1, Model2 = m2)) continues to
work without changes.
Most users can adopt the new interface immediately:
# Old way (still works)
models <- list(Model1 = m1, Model2 = m2)
easy_table(models)
# New way (recommended)
easytable(m1, m2)
# With custom names
easytable(m1, m2, model.names = c("Model1", "Model2"))This is a complete rewrite of easytable with breaking changes. Version 2.0.0 modernizes the package architecture and dramatically expands functionality.
output parameter: "word",
"markdown", or "latex""word" for backward compatibilityparse_models.R: Extract coefficients and
statisticstransform_table.R: Handle control variables and
organizationformat_word.R, format_markdown.R,
format_latex.R: Format-specific renderersvalidators.R: Comprehensive input validation⚠️ IMPORTANT: The following changes may affect existing code:
OLD: Package automatically installed missing dependencies
NEW: Users must install dependencies themselves
If you get an error about missing packages, install them with:
install.packages(c("flextable", "lmtest", "sandwich", "margins"))F and T were acceptedFALSE and TRUE (best
practice)F or T, they won’t workFixed control variable regex bug: Previously, searching for control variable “hp” would also match “hpq”. Now uses word boundaries for exact matching.
Fixed deduplication issue: Improved handling of duplicate control variable rows (previously noted as “slight problem” in code)
Explicit namespace calls: All function calls use
explicit namespaces (e.g., dplyr::filter) to prevent
masking issues
Better handling of GLM models: Improved extraction of fit statistics for generalized linear models
vignette("easytable-intro") with working examplesAI_NOTES.md with
architecture and contributor guidelinesGood news: Most basic usage should work without changes!
# This still works exactly the same
easy_table(model_list)Old behavior (0.1.0):
# Package would auto-install dependencies (security risk!)
easy_table(models)
# Installing package into '~/R/library'...New behavior (2.0.0):
# Get clear error with installation instructions
easy_table(models)
# Error: Package 'flextable' is required for Word output.
# Install it with: install.packages('flextable')
# You install once:
install.packages("flextable")
# Then use normally:
easy_table(models)New in 2.0.0:
# Markdown for Quarto/RMarkdown
easy_table(models, output = "markdown")
# LaTeX for PDF
easy_table(models, output = "latex")All advanced features work the same way:
# Robust SE - still works
easy_table(models, robust.se = TRUE)
# Marginal effects - still works
easy_table(models, margins = TRUE)
# Control variables - still works (now with fixed regex bug!)
easy_table(models, control.var = c("species", "island"))
# Highlighting - still works
easy_table(models, highlight = TRUE)
# CSV export - still works
easy_table(models, csv = "results")Install what you need:
# For basic usage (Word output)
install.packages(c("broom", "dplyr", "flextable"))
# For robust standard errors
install.packages(c("lmtest", "sandwich"))
# For marginal effects
install.packages("margins")
# For Markdown/LaTeX output
install.packages("knitr")
install.packages("kableExtra") # optional, for enhanced formatting✅ Function name: easy_table() ✅ Default behavior: Word
output via flextable ✅ Parameter names: robust.se,
margins, control.var, highlight,
csv ✅ Model support: lm, glm ✅
Significance stars: *** p < .01, ** p <
.05, * p < .1 ✅ Model fit statistics: N, R sq., Adj. R
sq., AIC (glm only)
🔄 Must install dependencies manually (no more auto-install) 🆕 New output formats: markdown and latex 🐛 Control variable matching now works correctly 📚 Much better documentation and examples ✅ Comprehensive test coverage 🏗️ Cleaner, more maintainable code architecture
R/parse_models.R)parse_single_model() for individual model
parsingformat_coefficients() for significance star
formattingextract_model_measures() for fit statisticsparse_models() for multi-model parsingR/transform_table.R)collapse_control_vars() with fixed regex
patternsmark_control_vars() for Y indicatorsdeduplicate_control_vars() for cleaning
duplicatessort_table() for proper orderingseparate_measures() for bottom placementtransform_table() as main orchestratorR/format_word.R): Extracted and
cleaned flextable codeR/format_markdown.R): NEW -
knitr/kableExtra supportR/format_latex.R): NEW - LaTeX
with booktabsR/validators.R)validate_model_list() with clear error
messagesvalidate_model_types() for supported model
checkingvalidate_control_vars() with warnings for missing
varsvalidate_parameters() for type checkingR/easytab.R)output parameter with validationThe modular architecture in 2.0.0 makes it easy to add:
Found a bug? Have a feature request? Please open an issue on GitHub: https://github.com/alfredo-hs/easytable/issues
Initial release (2024)
Note: Version 0.1.0 had critical issues: - Runtime package installation (security risk) - Monolithic code structure (hard to maintain) - Control variable regex bug - Limited to Word output only - No tests or comprehensive documentation
All issues resolved in 2.0.0.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.