Why you should not learn R

Before we continue, we have to get something out of the way: there are good reasons not to learn R! I do not want to discourage you from learning R — personally, I think R is one of the greatest tool a researcher or data analyst can have — but I also understand that it’s not for everyone and it is important to consider the cost of learning R and the possible alternatives.

A picture of the Evergreen container ship stuck sideways in the Suez Canal

Figure 0.1: Regardless of what R enthusiasts like me will tell you, R is not the solution to every problem.

Learning R is a considerable time investment

First of all, R can be challenging to learn. Learning any programming language requires continuous practice, and depending on your previous experience and your ability to “think like a computer”, it will take months or years before you can work efficiently in R. Getting there can sometimes be frustrating. Even if you already know another programming language, R may be difficult to learn, because it can be a little weird.5 This investment of time and cognitive energy may never pay off if you only do a small analysis every once in a while or if your current workflow is already very efficient.

Free point and click alternatives

There are free alternatives to R that do not require coding. Some of them specialize in particular parts of the data analysis workflow, for example,

Others offer comprehensive functionality that rivals that of expensive software like SPSS. Jamovi and JASP, for example, are graphical user interfaces that are built on top of R and allow you to utilize much of R’s power without writing any code.

A screenshot of Jamovi's user interface

Figure 0.2: There are plenty of fish in the open source sea and Jamovi is a particularly tasty one.

Commercial software

There are many well-rounded commercial software packages for data analysis, such as SPSS, SAS, Stata, MPlus, and MATLAB. Chances are, you are already familiar with at least one of them. It’s worth considering that some commercial tools are the gold standard for certain types of analyses and the exact same methods may not be available in R.6 Moreover, commercial software often does a better job than R at guiding you through the jungle of statistical tests and models, they provide customer support and there is normally a single, well-documented way to solve a certain type of problem. In contrast, R often offers a multitude of ways to reach the same goal. While this allows you to choose the tools that suit your needs, this choice can be difficult. Consequently, R requires a more thorough understanding of what your are trying to achieve.

A gif of the R console cursor blinking expectantly

Figure 0.3: Welcome to R! Here’s how you quit…

Other programming languages

Point-and-click graphical user interface such as SPSS or Jamovi only work well if you stay within the limits that their developers had in mind. Programming gives you much more versatility and flexibility,7 which makes it a useful skill to have under your belt, even if you end up not using it much. However, R is by no means the only programming language you could choose to learn. For example,

  • Python is worth a look if you want to learn a language that is more universally useful than R while still being excellent for data analysis,
  • Julia is a great choice If you need a language that is as focused on interactive scientific computing as R, but more modern and a lot faster
  • Javascript, the language of the web, is great if you are interested in building interactive data visualizations, but it is also shaping up to become a serious contender in the data analysis space.8

  1. For examples of R’s weirdness, I recommend John Cook’s talk The R Language The Good The Bad & The Ugly and Roger Peng’s talk Teaching R to New Users: From tapply to Tidyverse.↩︎

  2. For example, handling missing data with Maximum Likelihood in MPlus is not possible in the equivalent R package, {MClust}.↩︎

  3. In computer science this is referred to as the expressive power of a programming language↩︎

  4. For example, see https://js4ds.org/↩︎