# [R] How do I coerce numeric factor columns of data frame to vector?

Martin Maechler maechler at stat.math.ethz.ch
Tue Sep 9 17:37:22 CEST 2003

```>>>>> "NaLi" == Na Li <nali at biostat.umn.edu>
>>>>>     on Tue, 09 Sep 2003 10:15:22 -0500 writes:

NaLi> On 9 Sep 2003, Michael A. Miller outgrape:
>> > > > > >  "Thomas" == Thomas W Blackwell <tblackw at umich.edu> writes:
>>
>> >  Michael - Because these columns are factors to begin with,
>> >  using as.numeric() alone will have unexpected results.  See
>> >  the section "Warning:" in help("factor").
>>
>> Ah, thanks for pointing that out.  When I've used as.numeric on
>> factors, it is usually because I've explicitly made a numeric
>> variable a factor.  I can see where something that I think aught
>> to be numeric would be interpreted as a factor, say due to an
>> error in formatting an input file.  If I do something like this:
>>
>> x <- some numeric array
>> f <- factor(x)
>> y <- as.numeric(x)
>>
>> is there a possibility of y not equalling x?  If x really is
>> numeric that is.

>> x <- c(1, 3, 1)
>> y <- factor (x)
>> y
NaLi>  1 3 1
NaLi> Levels: 1 3
>> as.numeric (y)
NaLi>  1 2 1

NaLi> I don't know a good way to convert it back however,

this is almost a FAQ,
but I'm astonished that the answer isn't even in  help(factor).
I'll put it there for R 1.8.0

NaLi> except

>> as.numeric (levels (y)[as.numeric (y)])
NaLi>  1 3 1

NaLi> which is a bit awkward.

NaLi> Michael

as.numeric(as.character(y)) !

{in some cases you might consider using as.integer() instead of as.numeric()}

```