I've been reading David Robinson's excellent blog entry &quot;Teach the tidyverse to beginners&quot; (http://varianceexplained.org/r/teach-tidyverse), which argues that a tidyverse approach is the best way to teach beginners.  He summarizes two competing curricula:1) &quot;Base R first&quot;: teach syntax such as $ and [[]], built in functions like ave() and tapply(), and use base graphics2) &quot;Tidyverse first&quot;: start from scratch with pipes (%__%) and leverage dplyr and use ggplot2 for graphicsIf I had to choose one of these approaches, I'd also go with 2) (&quot;Tidyverse first&quot;), since it helps to move us closer to helping our students &quot;think with data&quot; using more powerful tools (see here for my sermon on this topic). A third wayOf course, there’s a third option that addresses David’s imperative to &quot;get students doing powerful things quickly&quot;.  The mosaic package was written to make R easier to use in introductory statistics courses.  The package is part of Project MOSAIC (http://mosaic-web.org), an NSF-funded initiative to integrate statistics, modeling, and computing. A paper outlining the mosaic package's &quot;Less Volume, More Creativity&quot; approach was recently published in the R Journal (https://journal.r-project.org/archive/2017/RJ-2017-024). To his credit, David mentions the mosaic package in a response to one of the comments on his blog.Less Volume, More CreativityOne of the big ideas in the mosaic package is that students build on the existing formula interface in R as a mechanism to calculate summary statistics, generate graphical displays, and fit regression models. Randy Pruim has dubbed this approach &quot;Less Volume, More Creativity&quot;.While teaching this formula interface involves adding a new learning outcome (what is &quot;Y ~ X&quot;?), the mosaic approach simplifies calculation of summary statistics by groups and the generation of two or three dimensional displays on day one of an introductory statistics course (see for example Wang et al., &quot;Data Viz on Day One: bringing big ideas into intro stats early and often&quot; (2017), TISE). The formula interface also prepares students for more complicated models in R (e.g., logistic regression, classification).Here's a simple example using the diamonds data from the ggplot2 package.  We model the relationships between two colors (D and J), number of carats, and price. I'll begin with a bit of data wrangling to generate an analytic dataset with just those two colors. (Early in a course I would either hide the next code chunk or make the recoded dataframe accessible to the students to avoid cognitive overload.)  Note that an R Markdown file with the following commands is available for download at https://nhorton.people.amherst.edu/mosaic-blog.Rmd.recoded %  filter(color==&quot;D&quot; | color==&quot;J&quot;) %__%  mutate(col = as.character(color))We first calculate the mean price (in US$) for each of the two colors.mean(price ~ col, data = recoded) D J 3170 5324 This call is an example of how the formula interface facilitates calculation of a variable's mean for each of the levels of another variable. We see that D color diamonds tend to cost less than J color diamonds.A useful function in mosaic is favstats() which provides a useful set of summary statistics (including sample size and missing values) by group.favstats(price ~ col, data = recoded)
col
min
Q1
median
Q3
max
mean
sd
n
missing
D
357
911
1838
4214
18693
3170
3357
6775
0
J
335
1860
4234
7695
18710
5324
4438
2808
0
A similar command can be used to generate side by side boxplots. Here we illustrate the use of lattice graphics. (An alternative formula based graphics system (ggformula) will be the focus of a future post.)bwplot(col ~ price, data = recoded)
The distributions are skewed to the right (not surprisingly since they are prices). If we wanted to formally compare these sample means we could do so with a two-sample t-test (or in a similar fashion, by fitting a linear model).t.test(price ~ col, data = recoded)	Welch Two Sample t-testdata:  price by colt = -20, df = 4000, p-value |t|)    (Intercept)   3170.0       45.0    70.4   %   group_by(col) %__%   summarize(meanval = mean(price, na.rm = TRUE)) col
meanval
D
3170
J
5324
That being said, I suspect that many students (and instructors) will still use favstats() for simple tasks (e.g., to check sample sizes, check for missing data, etc).  I know that I do.  But the important thing is that unlike training wheels, mosaic doesn't hold them back when they want to learn new things. I'm a big fan of ggplot2, but even Hadley agrees that the existing syntax is not what he wants it to be.  While it's not hard to learn to use + to glue together multiple graphics commands and to get your head around aesthetics, teaching ggplot2 adds several additional learning outcomes to a course that's already overly pregnant with them.Side note
I would argue that a lot of what is in mosaic should have been in base R (e.g., formula interface to mean(), data= option for mean()).  Other parts are more focused on teaching (e.g., plotModel(), xpnorm(), and resampling with the do() function).Closing thoughts
In summary, I argue that the mosaic approach is consistent with the tidyverse. It dovetails nicely with David's &quot;Teach tidyverse&quot; as an intermediate step that may be more accessible for undergraduate audiences without a strong computing background.  I'd encourage people to check it out (and let Randy, Danny, and I know if there are ways to improve the package).Want to learn more about mosaic?  In addition to the R Journal paper referenced above, you can see how we get students using R quickly in the package's &quot;Less Volume, More Creativity&quot; and &quot;Minimal R&quot; vignettes.  We also provide curated examples from commonly used textbooks in the “mosaic resources” vignette and a series of freely downloadable and remixable monographs including The Student’s Guide to R and Start Teaching with R.