## Thursday, November 29, 2007

### Convert factors to numbers

If you have a vector of factors it is easy to get the factor level; however, I always forget how to extract the factor value. I ran into the answer here.
`> x<-factor(c(round(rnorm(10),2),"A","B",NA))> x [1] 1.61  1.12  1.26  0.09  -0.13 0.16  -0.03 -0.1  0.09  -0.47  [11] A     B    Levels: -0.03 0.09 -0.1 -0.13 0.16 -0.47 1.12 1.26 1.61 A B> as.numeric(x) [1]  9  7  8  2  4  5  1  3  2  6 10 11 NA> as.numeric(levels(x)[x]) [1]  1.61  1.12  1.26  0.09 -0.13  0.16 -0.03 -0.10  0.09 -0.47     [11]   NA    NA   NAWarning message:NAs introduced by coercion `

**UPDATE**
And another method mentioned in the comments (that I like better):

> as.numeric(as.character(x))

## Thursday, November 15, 2007

### Preparing plots for publication

The plotting capabilities of R are excellent; however, when I am preparing a figure for publication, I often need to combine multiple plots or add objects (e.g., arrows or text) to an existing plot. While this can be accomplished in R, my patience for tweaking layout parameters tends to run out quickly. I searched around and found a nice solution using open source software (an example with Matlab plots is described here).

1) Create the desired figure in R and export as an eps file:

`library(ggplot2)postscript("myfig.eps",horizontal=FALSE, paper="special",height=10,width=10)qplot(x,y,data=mydat)dev.off()`

2) Install the necessary software on your computer, and then convert the image file to one more easily edited.

`#install softwaresudo aptitude install pstoedit tgif#clean up the eps file so it is more easily readeps2eps myfig.eps myfig2.eps#convert the eps file to a tgif objectpstoedit -f tgif myfig2.eps myfig2.obj`

3) Edit the new file myfig2.obj in tgif.