*le premier langue* for statistical thinking that enables the formulation of ideas, and notions about statistical models and data that are difficult to express succinctly in other languages including mathematical notation. For example, suppose you want to discuss multiple regression. A mathematical exposition might begin with the equation:

(1) Y = X(beta) + epsilon

A statistician will naturally interpret this as an expression of the regression model, but (1) is primarily a statement about the relationship of random variables, abstract mathematical entities not statistical models. In contrast, the R expression

(2) model <- lm(y ~ x)

is a statement about the linear model that relates the data structures x and y. For a person who “speaks” some R, (2) “means” the model object coefficients, residuals etc. that result from fitting a linear model to the data structures x and y. Moreover, (2) actually makes “model” an object, packed with information that describes the regression and can be thought about as a whole and “talked about” with other R expressions. There is certainly some overlap, but expressions (1) and (2) are really about different concepts.

As another example of the expressive power of the R language, consider how difficult it is to formulate multi-level hierarchical models in standard mathematical notation. With the aid of the notation “j[i]” which is used to encode group membership (j[10] = 2 means the tenth element in the data indexed by i belongs to group 2) Gelman and Hill (Cambridge 2007: a must read for anyone new at multi-level modeling) write the simple varying intercept model with one additional predictor as yi =( alpha)j[i] + (beta)xi +(epsilon)i. This nonstandard notation gets messy quickly as complexity increases, and as Gelman and Hill point out it doesn’t enable the unique specification of the model. (They discuss five ways to write the same model.) By way of contrast, their R code using the lmer function (now lme4):

model <- lmer(y ~ x + (1 | group) )

is succinct, preserves the syntax for linear models, and generalizes reasonably well with complexity. Just like there are some things that come naturally in your mother tongue but are awkward to express in another language, R enables concise statements about statistical models that are difficult to express otherwise.

R’s syntax is not the only feature that contributes to its expressive power. The interplay of R’s objects (nouns) with methods (verbs) facilitates formulating expressions that make sense under many different circumstances. For example, one can use the same R function “summary” to form statements that talk about data: summary(x), as well as statements that talk about models: summary(model). This ability of functions to have methods for different kinds of objects is a hallmark of R that greatly eases the process of learning the language. It is easy to say statistical things in R, and just a little bit of language skill goes a long way in turning statistical thoughts into action packed, working statistical sentences.