[R] Repeated factor levels - inconsistency of factor and levels<- functions?

Honza Hucin honza at ifolk.cz
Thu Sep 25 15:42:39 CEST 2008


Hello,

I have a vector x containing letters ("a", "b" etc.). Now I want to
convert it to factor and group some letters into one common level. If I do
it by factor function, giving the same label names for all values I want
to group, it doesn't work:

> x<-letters[1:5]
> x
[1] "a" "b" "c" "d" "e"
> f<-factor(x,levels=letters[1:5],
         labels=c("vowel","consonant","consonant","consonant","vowel"))
> levels(f)
[1] "vowel"     "consonant" "consonant" "consonant" "vowel"

But, after it, if I update level names by a single assignment, levels with
the same names will group, even when I don't change all of them:

> levels(f)[1]<-"vowel" #changing only one vector item will make ALL
levels to group
> levels(f)
[1] "vowel"     "consonant"

I'm rather confused! I think this behavior is double inconsistent. First,
the labeling in factor function should work similarly as in levels<- ,
i.e. they should group levels with the same names either BOTH or NONE.
Second, if I change only one vector item, it should not change anything
else, especially it should not make any "invisible" grouping.

Or am I wrong? Or is it a bug?

Jan Hucin



More information about the R-help mailing list