[R] Convert factor to numeric vector of labels
John Kane
jrkrideau at yahoo.ca
Mon Aug 13 17:33:12 CEST 2007
This is one of R's rather _endearing_ little
idiosyncrasies. I ran into it a while ago.
http://finzi.psych.upenn.edu/R/Rhelp02a/archive/98090.html
For some reason, possibly historical, the option
"stringAsFactors" is set to TRUE.
As Prof Ripley says FAQ 7.10 will tell you
as.numeric(as.character(f)) # for a one-off conversion
>From Gabor Grothendieck A one-off solution for a
complete data.frame
DF <- data.frame(let = letters[1:3], num = 1:3,
stringsAsFactors = FALSE)
str(DF) # to see what has happened.
You can reset the option globally, see below. However
you might want to read Gabor Grothendieck's comment
about this in the thread referenced above since it
could cause problems if you transfer files alot.
Personally I went with the global option since I don't
tend to transfer programs to other people and I was
getting tired of tracking down errors in my programs
caused by numeric and character variables suddenly
deciding to become factors.
>From Steven Tucker:
You can also this option globally with
options(stringsAsFactors = TRUE) # in
\library\base\R\Rprofile
--- Falk Lieder <falk.lieder at googlemail.com> wrote:
> Hi,
>
> I have imported a data file to R. Unfortunately R
> has interpreted some
> numeric variables as factors. Therefore I want to
> reconvert these to numeric
> vectors whose values are the factor levels' labels.
> I tried
> as.numeric(<factor>),
> but it returns a vector of factor levels (i.e.
> 1,2,3,...) instead of labels
> (i.e. 0.71, 1.34, 2.61,
).
> What can I do instead?
>
> Best wishes, Falk
More information about the R-help
mailing list