[R] Unable to specify order of a factor

Sarah Goslee sarah.goslee at gmail.com
Wed Mar 21 15:31:45 CET 2012


Is this what you need?

> total.density <-
+ c(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32)
> total.density <- factor(total.density, levels=c(8, 16, 32), ordered=TRUE)
> str(total.density)
 Ord.factor w/ 3 levels "8"<"16"<"32": 1 1 1 1 1 1 1 1 1 1 ...


On Wed, Mar 21, 2012 at 10:26 AM, Justin Montemarano <jmontema at kent.edu> wrote:
> Hi all:
>
> I'm attempting to create a faceted plot with ggplot2 and I'm having issues
> with a factor's order that is used to define the facet_grid().
>
> The factor (named total.density) has three levels - 8, 16, and 32 - and I
> would like them presented in that order.  Running
> order(levels(total.density)) yields the incorrect order of the facet grid -
> 2 3 1, corresponding with 16, 32, and 8.
>
> I have attempted correcting the order with the following solutions (of
> course, not run at once):
>
> #total.density <- relevel(total.density, '8')
>        #total.density <- as.numeric(levels(total.density)[total.density])
>        #total.density <- factor(total.density, levels = c('8','16','32'))
>        #total.density <- factor(total.density, levels =
> levels(total.density)[c(3,1,2)])
>        #library(gregmisc)
>        #total.density <- reorder.factor(total.density, c('8', '16', '32'),
> order = T)
>
> The data are as follows:
>
> total.density <-
> c(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32)
>
> I'm running R 2.14.2 with all packages up-to-date as of 21.3.2012.
>
> Any help would be greatly appreciated.
>
> -

-- 
Sarah Goslee
http://www.functionaldiversity.org



More information about the R-help mailing list