[R] as.data.frame(cbind()) transforming numeric to factor?

Martin Maechler maechler at stat.math.ethz.ch
Fri Aug 18 19:10:01 CEST 2006


>>>>> "Tom" == Tom Boonen <tom.boonen.maiden at gmail.com>
>>>>>     on Fri, 18 Aug 2006 11:16:45 -0400 writes:

    Tom> Thanks everybody. I recognize my mistake now.
    Tom> I think    as.data.frame(cbind(x.1,x.2),stringsAsFactors = FALSE)
    Tom> would be a good idea.

I think

	data.frame(x.1, x.2 = I(x.2))

would be a considerably better idea.

[ The use of I(.) for preventing coercion to factors 
  is a much older and "S-like" way ]

Martin



    Tom> Tom

    Tom> On 8/18/06, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
    >> On Fri, 18 Aug 2006, Tom Boonen wrote:
    >> 
    >> > Dear List,
    >> >
    >> > why does as.data.frame(cbind()) transform numeric variables to
    >> > factors, once one of the other variablesused is a character vector?
    >> >
    >> > #
    >> > x.1 <- rnorm(10)
    >> > x.2 <- c(rep("Test",10))
    >> > Foo <- as.data.frame(cbind(x.1))
    >> > is.factor(Foo$x.1)
    >> >
    >> > Foo <- as.data.frame(cbind(x.1,x.2))
    >> > is.factor(Foo$x.1)
    >> > #
    >> >
    >> > I assume there is a good reason for this, can somebody explain? Thanks.
    >> 
    >> Only if you can explain the good reason why you did not just use
    >> data.frame(x.1, x.2)!
    >> 
    >> cbind() makes a matrix out of vectors, here a character matrix.  And then
    >> as.data.frame() converts character columns to factors.
    >> 
    >> --
    >> Brian D. Ripley,                  ripley at stats.ox.ac.uk
    >> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
    >> University of Oxford,             Tel:  +44 1865 272861 (self)
    >> 1 South Parks Road,                     +44 1865 272866 (PA)
    >> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
    >> 

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



More information about the R-help mailing list