View() now renders correctly inside
webR (the in-browser R that powers the ModernDive
book’s live exercises). webR has no pandoc, so a
DT::datatable() htmlwidget cannot be saved as the
self-contained HTML the cell needs (DT::saveWidget()
errors), and the auto-print path is gated by interactive()
being FALSE. In webR, View() now builds a
self-contained static HTML table and pushes it through webR’s viewer
hook, so the data displays inline instead of only printing the
explanatory message. Outside webR the DT::datatable()
behaviour is unchanged.get_regression_points() and
get_regression_summaries() now handle in-formula
transformations on either side of the model formula
(e.g. lm(log(y) ~ poly(x, 2))). LHS transforms previously
errored; they now produce a sanitized outcome column on the model’s
scale (e.g. log_mpg, log_mpg_hat). RHS
transforms no longer leak basis matrices or wrapper columns
(poly() matrix columns, scale(),
I()) into the points table; the original predictor variable
is shown instead. The .rownames column is no longer leaked
into the output.get_regression_table(),
get_regression_points(), and
get_regression_summaries() now accept glm()
model objects (resolves issue #20). For
glm() models, get_regression_points() returns
fitted values and residuals on the response scale (e.g. probabilities
for logistic regression). get_regression_summaries()
returns a glm-shaped summary (mse, rmse,
deviance, null_deviance, aic,
bic, log_lik, df_residual,
df_null, nobs) — R² columns are not included
since they don’t apply to glm. get_regression_table() gains
an exponentiate argument (default FALSE) for
returning odds/rate ratios for log/logit-link models.get_regression_table() is now applied to the tidy output’s
term column rather than model$coefficients
names, which avoids breaking confint.glm’s
profile-likelihood refits.@docType package tag from
R/moderndive.R (resolves issue #133).
The "_PACKAGE" sentinel was already in place, so the
moderndive-package alias is generated correctly.pennies_resamples so the replicate
column is correctly numbered 1..35 instead of being uniformly
1 (resolves issue #130).
The bug was an ungroup() missing in the
data-raw/process_data_sets.R pipeline, so
mutate(replicate = 1:n()) ran per-group on a single-row
nested tibble. The dataset has been regenerated; row count and structure
are otherwise unchanged.View() wrapper (resolves issue #99). In
an interactive R session it behaves identically to
utils::View(). In non-interactive contexts (R Markdown,
Quarto, scripts) where utils::View() typically errors, it
instead renders an interactive DT::datatable() inline so
documents can still knit/render. DT is now in
Imports. A short packageStartupMessage() is
emitted only on non-interactive attach to explain the override;
interactive sessions see no extra message. Attaching
moderndive masks utils::View. For large data
frames the inline DT::datatable() is slow and warns that
the data is too big for a client-side table, so in non-interactive
contexts View() now shows a random sample
of n rows (default 1000) when x
is larger, emitting a message that says so. New arguments n
(sample size), full = FALSE (set TRUE to show
every row), seed (reproducible sample), and
quiet = FALSE (silence the message) control this; the
sample never disturbs the caller’s RNG stream, and the interactive
utils::View() path is unchanged.moderndive datasets
instead of base R / ggplot2 ones. View(),
get_correlation(), get_regression_table(),
get_regression_points(),
get_regression_summaries(),
plot_3d_regression(), and the package-level overview now
use un_member_states_2024 (with
life_expectancy_2022 ~ gdp_per_capita-style models).
geom_categorical_model() now uses evals
(score ~ rank) instead of ggplot2::mpg
(hwy ~ drv)._pkgdown.yml: site url: now includes the
https:// scheme so pkgdown::check_pkgdown()
matches it against the URL listed in DESCRIPTION.README: added descriptive alt text to the
hex-sticker image.get_correlation() now accepts multiple right-hand-side
variables in the formula (e.g. mpg ~ hp + cyl + wt)
(resolves issue #29). The
default output is a long tibble with one row per predictor; pass
wide = TRUE for one column per predictor. Single-RHS
behavior is unchanged. A one-time message points users to
corrr::correlate() if they want a full pairwise correlation
matrix; suppress it with quiet = TRUE.plot_3d_regression() function for interactive 3D
scatterplots with a fitted regression plane (resolves issue #27). Pass
a formula z ~ x + y and the function returns a
[plotly][plotly::plotly] htmlwidget. plotly is
in Suggests; install it with
install.packages("plotly") to use this function.un_member_states_2024 data for upcoming
ModernDive v2 updatesspotify_by_genre data for upcoming ModernDive v2
updatestidy_summary() function to summarize data frame
columns for upcoming ModernDive v2 updatesold_faithful_2024 data for upcoming ModernDive v2
updatescoffee_quality data for upcoming ModernDive v2
updatesalmonds_sample data for upcoming ModernDive v2
updatesalmonds_bowl and almonds_sample_100
data for upcoming ModernDive v2 updates to Inference chaptersearly_january_2023_weather and
envoy_flights data for upcoming ModernDive v2 updates
derived from data in the nycflights23 packagebroom reverse dependency issue https://github.com/moderndive/moderndive/issues/128early_january_weather consisting of January
subset of nycflights13::weathercoffee_quality dataset: 1340 samples of coffee tested for
their quality levelamazon_books dataset: sample of books available for
purchase on Amazon.comipf_lifts consisting of international power lifting
resultsbabies on maternal smoking and infant healthev_charging: information from 3,395 high resolution
electric vehicle charging sessions.ma_traffic_2020_vs_2019 consisting of collisions
information sourced from reports produced by the Massachusetts Traffic
Data Management System.mass_traffic_2020 consisting of traffic data for 13
Massachusetts countiesmario_kart_auction datasetavocados consisting of avocado prices dataset downloaded
from the Hass Avocado Board website in May of 2018.saratoga_houses random sample of 1057 houses taken
from full Saratoga Housing Data.alaska_flights consisting of Alaska Airlines
subset of nycflights13::flightsconf.level argument to
get_regression_table() inherited from
broom::tidy.lm()vignettes/paper.mdpkgdown and covr issues, defragged
documentation.vignettes/why-moderndive.Rmd main
vignettegeom_parallel_slopes() with new arguments:
fullrange=TRUE to draw regression lines over the
entire support of the x-axis (by @wjhopper)level to set different level of confidence interval
shading (by @echasnovski)geom_categorical_model() for
visualizing regression models with one categorical explanatory/predictor
variable (by @wjhopper)gg_parallel_slopes()
directing users to use geom_parallel_slopes() instead (by
@mariumtapal)geom_parallel_slopes() geom extension to
ggplot2 package to plot parallel slopes regression models
with one numerical and one categorical variable (this is not possible
using ggplot2::geom_smooth()). Note this renders
gg_parallel_slopes() function added in v0.3.0
obsolete.geom_parallel_slopes() to “Why
moderndive?” vignettepennies_resamples data frame columnsget_correlation() now:
dplyr::group_by() groupingna.rm = TRUE
argument or by passing standard
stats:cor(use = "complete.obs") argument via
...gg_parallel_slopes(). In the future we hope to
define a new ggplot2 geom.moderndive?” vignetteget_regression_points() to return
a column that identifies the observational units/rowsDD_vs_SB: Dunkin Donuts and Starbucks in Eastern
Massachusetts data collected by @DelaneyMoranpromotions: tibble version of
openintro::gender.discrimination used to illustrate
permutation test.MA_schools: Relationship between SAT scores and
socio-economic status for Massachusetts high schools.mythbusters_yawn: Data from study on Mythbusters
show on whether yawning ispromotions_shuffled: one instance of
promotions with gender permuted/shuffledpennies_sample sample of 40 pennies from
pennies has been renamed orig_pennies_sample.
New pennies_sample consists of 50 pennies sampled from bank
in Northampton, MA, USA on 2019/2/1.pennies_resamples: 35 bootstrap resamples of new
pennies_samplemovies_genre: random sample of 32 action and 36
romance movies from ggplot2movies::moviesassertive::assert() codehouse_prices$date from dttm
(date-time) to date per R4DS comment
on using simplest data type possibleUpdated package for:
evals and house_prices datasets and
updated get_regression_table() and
get_regression_points() functions.Details:
get_correlation() function to omit
$ syntax and return a data frameinfer::rep_sample_n() instead of our own defined
version, as this function is now included in
inferevals, house_prices,
tactile_prop_red, pennies_sample and
mythbusters_yawn datasetsget_regression_summaries()newdata argument to
get_regression_points(). When:
newdata,
output it as well as residual (See Issue 17).residualtidyverse from Depends, Imports, or
SuggestsFixed broken url in ?bowl_samples
get_regression_* functions meant for novice
R users/regression fitters that process regression model outputspennies: 800 pennies to be treated as a population from
which to simulate sampling a numerical variable from (year
of minting)bowl: Bowl of 2400 balls of which 900 are red to be
treated as a population from which to simulate sampling a categorical
variable from (color). Also known as the urn sampling
framework .bowl_samples: data from tactile version of sampling
from bowl done in class: 10 groups sampled n=50 balls from
and counted the number red [ADD MODERNDIVE LINK]