On 9/10/2009, at 6:52 AM, Folkes, Michael wrote:

Hello all,
In order to get the desired order of panels within lattice I realized I needed to define my factor levels.
I now see how to properly do it (attached code), but:
1. I don't understand why I have to use factor() on a variable that is already a factor, and why levels() alone doesn't work to readjust the level order. 2. I just noticed that if I do use levels(xx$v1), it's changing something that can't be repaired with:
 xx$v1<-factor(xx$v1,levels=c('b','a','c')), and both plots are wrong.
I'm failing to grasp what levels() is doing compared to factor().
thanks very much.
Michael Folkes

#__________________________________

xx<-data.frame(v1=rep(letters[1:3],rep(3,3)),v2=rep(1:3,3),v3=rep (1:3,rep(3,3)))
str(xx)
levels(xx$v1)

#INCORRECT:
#if I run this level(), the factor() below doens't work properly
#levels(xx$v1)<-c('b','a','c')
xx
g1<-xyplot(v3~v2|v1,data=xx)

#CORRECT:
xx$v1<-factor(xx$v1,levels=c('b','a','c'))
g2<-xyplot(v3~v2|v1,data=xx)
xx
print(g1,split=c(1,1,2,1),more=T)
print(g2,split=c(2,1,2,1),more=F)

The object xx$v1 is ``really'' the vector of indices 1 1 1 2 2 2 3 3 3
Initially it has a levels attribute c('a','b','c') which says to
associate the symbol 'a' with index 1, 'b', with index 2, and 'c' with index 3.
When you type xx$v1 you see the sequence a a a b b b c c c.

The call

        levels(xx$v1) <- c('b','a','c')

says to associate the symbol 'b' with index 1, 'a', with index 2, and 'c' with index 3.
Now when you type xx$v1 you see the sequence b b b a a a c c c.

The call

        xx$v1 <- factor(xx$v1,levels=c('b','a','c'))

(done ***instead*** of the the call levels(xx$v1) <- c('b','a','c'))

essentially replaces xx$v1 by match(xx$v1,c('b','a','c')) so that now xx$v1 is ``really'' the vector of indices 2 2 2 1 1 1 3 3 3. The levels attribute says that 'b' is associated with 1, 'a' is associated with 2, and 'c' is associated with 3.
So when you type xx$v1 you see a a a b b b c c c as before.

        cheers,

                Rolf Turner

######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to