# Holcombe:ProgrammingInR

### Members

Alex Holcombe
Polly Barr
• Charlie Ludowici
• Kim Ransley
• Ingrid Van Tongeren
William Ngiam
Fahed Jbarah
• Patrick Goodbourn
Alumni

### Other

R is an interactive programming language for statistics. The syntax is very idiosyncratic, and not really in a good way. Try R for programmers for a description. However it may have menu-driven versions maybe available R commander we haven't tried that and another one is pmg GTK maybe here

In the lab we have the book Using R for Introductory Statistics. R_Statistics introduces you to R

Dani has posted some example code and graphs on his personal website.

R reference cheatsheet, also a file here Media:Matlab-python-xref.pdf‎ that gives equivalent code for doing array operations in MATLAB, Python, and R plot parameters

There is a wiki with some good tips here. Also Data frame tips, list of R websites

Functions in R can only return one parameter.

### dataframe stuff

Examining your data frame or object, let's say it's called datos

```typeof(datos) #returns "list!"
str(datos) #tells you it's a dataframe, number of observations, columns, etc
str(datos)
summary(datos) #good for ggplot objects also
```
```df\$varWithExtraLevels = factor(df\$varWithExtraLevels)
```
```length(df) #number of columns of dataframe
```
```names(df) #names of columns of dataframe
```
```library(Hmisc);
describe(df)
```
```#Calling typeof() on a dataframe returns "list"
```
```rm(objectToBeDeleted)
rm(list = ls())  #Delete nearly everything in memory
```

expand.grid() to create dataframe with every combination of some factors

```table(dataRaw\$speed,dataRaw\$relPhaseOuterRing)
```

## Creating Graphs (usu. ggplot2)

Good advice on graph choice, from human perceptual standpoint by Frank Harrell

In the lab we usually use the package, ggplot2, for graphs. Ask Sarah about the ggplot2 book.

For custom colour schemes, the Chart of R Colors is a helpful resource. The table with named colours is most useful.

ggplot2 tips:

```#where 'g' is your ggplot object
str(g)  #gives you everything!
summary(g) #gives a summary
last_plot() #refreshes the last plot and returns the struct
```
```p=p+scale_y_continuous(breaks=c(0,0.5,1),minor_breaks=c(.25,.75)) #changing axis breaks
p=p+opts(title="one-behind errors")
p=p+xlab('relative phase')
```
```opts(panel.grid.minor = theme_blank())+
```
```last_plot() + opts(panel.grid.minor = theme_line(colour = "black") )
```
```facet_grid(.~subject)  # rows~columns
```
```g<-g+stat_summary(fun.y=mean,geom="point",position="jitter") #getting jitter to work when you're collapsing across other variables with stat_summary
```
```g=g+ stat_smooth(method="glm",family="binomial",fullrange=TRUE) #adds logistic smoother to plot
#it's impossible to extract the function fits however because they're fit on the fly
#how can I fit an arbitrary function, like a psychometric function, e.g. cumulative gaussian with chance rate and lapse rate? Logistic is restricted to 0->1

```

order used for scale mapping (color, etc.) is perhaps the order of the levels property of the vector. This gives bizarre results because R's sort(unique(x)) default does not alphabetize strings. Getting things to appear in a graph or something the way you want may require reordering the 'levels' of a factor, like this to put DL as the last subject to be graphed:

```pvalsCIs\$subject<-factor(pvalsCIs\$subject,levels=c("AH","SM","SYL","WYC","DL")) #levels(pvalsCIs\$subject)
```

how I Holcombe:fit psychometric functions and bootstrap

## Debugging in R

How to examine and try things with a questionable variable within a function?

``` ee <<- resultsMeans #make global, violating all principles of good coding #DEBUG
STOP
```

After an error, calling traceback() gives you the stack

## doing ANOVAs etc

I think I had too many error terms reducing error terms

Anovas with repeated measures can be complicated in R.

We have some R books in the lab

## Dealing with circular data

von Mises vs. wrapped Gaussian,

see Swindale, N. V. (1998). Orientation tuning curves: empirical description and estimation of parameters. Biol Cybern, 78(1), 45-56.

## Setting up a proxy in R on a Mac

The easiest way to set up a proxy is simply to create a file called ".Rprofile" (make sure the file does note have a .txt or .rtf extension. Textwrangler will automatically give it an extension, it may be best to create the file using Vi in a terminal - using emacs probably won't work) in your user directory (~ or /Users/username/) with the line: ``` ```

``` Sys.setenv(http_proxy=”http://username:password@tcdproxy.tcd.ie:8080″) ```

Then restart R. This information (and more) can be found on Ken Benoit's webpage

For Sydney Uni, use: ``` ```

``` Sys.setenv(http_proxy=”http://www-cache.usyd.edu.au:8080″) ```