[R] initialize a factor vector

Patrick Burns pburns at pburns.seanet.com
Sat Jul 19 16:56:47 CEST 2008


'c' does not have a method for factors.  If you were
to try implementing one, you would probably quickly
figure out why not.

You want to call 'call' factor on the result of the call
to 'c'.


Patrick Burns
patrick at burns-stat.com
+44 (0)20 8525 0696
http://www.burns-stat.com
(home of S Poetry and "A Guide for the Unwilling S User")

Johannes Huesing wrote:
> I have found that factor vectors are shy beasts.
>
> Consider:
>
>   
>> empty <- factor(levels=c("eins", "zwei"))
>> value <- factor("eins", levels=c("eins", "zwei"))
>> c(empty, value)
>>     
> [1] 1
>   
>> empty[1] <- value
>> empty
>>     
> [1] eins
> Levels: eins zwei
>   
>
> I could not exactly predict this behaviour, but ?c says:
>
>     The output type is determined from the highest type of the
>      components in the hierarchy NULL < raw < logical < integer < real
>      < complex < character < list < expression. 
>
> As factor is a class (of the whole vector) and not a type (of a single 
> element), c does not seem to preserve the object information, i.e. there
> does not seem to be a c.factor, correct?
>
>



More information about the R-help mailing list