The Tidynomicon

A Brief Introduction to R for Python Programmers

"Speak not to me of madness, you who count from zero."


Years ago, Patrick Burns wrote The R Inferno, which is a guide to R for those who think they are in hell. Upon first encountering the language after two decades of using Python, I thought Burns was an optimist—after all, hell has rules.

I have since realized that R does too, and that they are no more confusing or contradictory than those of many other programming languages. They only appear so because R draws on a tradition that is unfamiliar to those of us raised with derivatives of C. Counting from one, copying data rather than modifying it, and a host of other features are (to quote the bard) not mad, just differently sane.

Welcome, then, to a universe where everything strange will become familiar, and everything familiar, strange. Welcome, thrice welcome, to R.


Padma, 27, has been building performance dashboards for a logistics company using Django and D3. The company has just hired some data scientists who use R, and she would like to try building some dashboards in Shiny. She isn’t a statistical expert, but she’s comfortable doing linear regression and basic time series analysis on web traffic, and now wants to learn enough about R to tidy up the analysts’ code and make them shine.

Derived constraints:

Learners’ Questions