# The shortest introduction to R

R is a curly brace language. It uses “`<-`” for assignment. Dots are allowed in names and don’t indicate structure. Arguments are both positional and named and can be defaulted.

```subtract <- function(first.arg, second.arg = 3) {
return(first.arg - second.arg)
}
```

Now `subtract(5, 1)` returns `4`, as does `subtract(second.arg=1, first.arg=5)`, and `subtract(5)` returns `2`.

This prints the numbers 1 to 10, inclusive:

```for (i in 1:10) {
print(i)
}
```

Data lives in vectors – lists of values of the same type. The types are logical (`TRUE` or `FALSE`), numeric, and character (string). Vectors are put together with the function `c()`, which coerces and collapses things, so these two character vectors are the same:

```c(1, 2, "three", 4, 5)
c(1, c(2, "three", c(4, 5)))
```

Just about everything in R happens element-wise on vectors. Shorter vectors are recycled (repeated) to provide enough elements when needed. So `subtract(c(10, 100))` will return `c(7, 97)`.

The heavily used data frame is essentially a list of vectors.

```x <- data.frame(col.one=c(1, 1, 2, 3, 5), col.two=6:10)
x
```
```  col.one col.two
1       1       6
2       1       7
3       2       8
4       3       9
5       5      10```

You can get the first row of `x` with `x[1, ]`. You can get the second column of `x` with `x[, 2]`, `x[[2]]` or `x\$col.two`.

You can select elements from vectors with logicals or index numbers. These both return `c(9, 10)`:

```x\$col.two[x\$col.two > 8]
x\$col.two[c(4, 5)]
```

You can get help with `help()` or the shortcut, `?`. For example, `?read.csv` or `help(plot)`. There’s also search functionality, but I recommend using the internet instead.

This introduction is designed to maximize utility over length, and does so by leaving some things out. I recommend John Cook’s online R programming for those coming from other languages for a slightly expanded view, and Norman Matloff’s book The Art of R Programming for a proper introduction with examples and applications.

## 6 thoughts on “The shortest introduction to R”

1. Hey Aaron, I find trying to learn R challenging because of the lack of ease of use in getting started – a steep learning curve. Do you recommend Matloff for someone like me?

• I don’t know of anything better than Matloff for really explaining the nuts and bolts step by step, building a strong foundation. A lot of R resources try to just jump right into statistical applications that leave you wondering how half the stuff is happening. So, yes, I think Matloff is quite good. Of course if you haven’t tried it yet, http://tryr.codeschool.com/ is another way to get a hands-on jump-start with R. Regardless of what you learn from, it’s likely that whatever specific thing you want to do with R will require some additional research, finding the right packages and syntax, etc. Get some decent foundation, and then start trying to do what you want to do! 🙂

• @Aaron, thanks for these resources! As someone who understands programming but is new to R, your intro (and John Cook’s) were helpful, and Try R was a good first tutorial. However, I didn’t *really* start understanding data types and subsetting until I went through the first week of Coursera’s Computing for Data Analysis. @Timothy: you might find their course to be useful, and it just started up again:
https://www.coursera.org/course/compdata

It moves fast and the “3-5 hours per week” workload is a severe underestimate for a beginner, but it’s only 4 weeks long.

@Aaron, looking forward to your “Clean Data with R” talk tomorrow!

2. Thanks Kevin! You’re right – I should remember that Coursera course; especially when it’s starting a new session! See you tomorrow!

3. Clean data with R – Plan Space from Outer Nine

4. Another great resource for learning some more advanced topics in R is Hadley’s online book: http://adv-r.had.co.nz/ Thanks to John for pointing out that this should be included here!