Top 10 tips to get started with R

  • Be motivated. R has a steep learning curve. Find a problem you can't solve otherwise. E.g. plotting multivariate data, a statistical analysis for which an R function exists already.
  • Download and install R. Get to know the R console. Learn how to install additional packages, how to access the history, how to use auto completion and open the help system. Review the R Installation and Administration manual and check out the free books section on CRAN.
  • Get familiar with the R help files. They can appear cryptic at the start, but there is a structure to them. Read and re-read a couple of help files again and again. Look out for the input and output sections, execute the examples, run the demos, e.g. demo(graphics). Subscribe to R-help and read questions and answers, check out stackoverflow, follow blogs. Search with
  • Learn how to get your data into R. The easiest way is usually via a CSV-file (CSV=comma separated values), using read.csv. Look into XLConnect, if you have to deal with spreadsheet files. Move on to write queries against data bases, e.g. using RODBC. Skim through the R Data Import/Export manual.
  • Try to understand the different data types in R and how to modify them. What are the differences between a matrix and a data frame? What is a factor? What is a list? Think about the different use cases. Review the Introduction to R manual.
  • Do charts! Lots of charts. They are rewarding and keep you motivated. Be inspired by the R Graph Gallery. Check out the following packages: lattice, plotrix, ggplot2, deducer, googleVis.
  • Learn how you can modify and reshape data in R and apply functions on subsets using by, apply, lapply, ave, reshape, sweep, with, within, etc. Set aside a weekend to think about these functions.
  • Write your R code into files instead of typing it all into the R console. Use an integrated development environment (IDE), e.g. ESS Emacs, RStudio, StatET Eclipse.
  • Understand the concept of functions. Write a function, which gives "Hello World" back. Modify it, so it has an input argument NAME and it prints "Hello NAME". Review the code of existing R functions. Copy from existing code.
  • Document your code! Start your code by explaining what you want to achieve and only code that much, then write down the next step in plain English and code again. How will you know that your code does what you want it to do? Testing can help. Think about your code style and how you will be versioning your files.

Bonus tip


  1. Great post! After more than a year of intense effort, I often still feel like a novice. It's good to be reminded of the fundamentals.

  2. Oh, drat: forgot to close the html-tag. Sorry.

  3. Nice list :)

    A tiny self promotion (for future lists), a tiny package I wrote for updating R on Windows:


  4. I share your view about the learning curve and I am grateful for the posts on R-help, R-devel or R-bloggers, which helped me to get to the next level. Often small snippets of R code stimulated my curiosity and gave me the motivation to re-read the help pages and experiment again.

  5. Bonus tip number two: RStudio rules!

  6. If R is your first language or you don't have a background in scientific and statistical computing, the learning curve is *extremely* steep. Most of the newer languages, especially Python and Ruby, are a *lot* easier for a beginner than R.

  7. I love RStudio; it helps me navigate much more easily than is otherwise possible.

  8. I'm a reasonably intelligent person but with no programming experience. I can usually pick things up quickly as I go. R is a different animal. I washed out of the Data Analysis course at Coursera. However, I did learn how to use RStudio and intend to retrace my steps until I gain mastery. Thanks for the tips!

  9. Unfortunately, you are so right. I am proficient in Stata and SPSS syntax and I tried R for a couple of times. Although I'd love to use a open source statistical analysis software, R's learning curve always brought be (quite quickly) back to the other programmes.

    For example in Stata, I am barely using the mouse-clicky interface, but the Stata syntax itself is much easier than the R syntax. I always dreamed of someone programming a Stata-syntax command line for R....