[R] basic dataframe question

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Sep 3 09:30:45 CEST 2008


The problem is your misuse of cbind.  You want

CuIEP <- data.frame(Cu = CuZn$Cu, CuCen = CuZn$CuCen, StartCu, EndCu)

cbind() created a matrix, as there were numeric inputs the matrix has to 
be numeric.  I've absolutely no idea where you got the idea to use cbind 
here, but it is helpdful to test each step to see where the conversion 
occurred, rather than assume your guess is correct.


On Tue, 2 Sep 2008, Matthew.Findley at ch2m.com wrote:

> R Users:
>
> I'm wondering:
>
> Why does my logical vector becomes a numeric vector when stuffed into a data frame?  How do I change this so that it's retained as a logical data type?  I've tried a couple of things but to no avail.
>
> Here's my example code:
>
> # Exercise 4-1 in Non-Detects and Data Analysis. Dennis Helsel.  2005.
>
> # "Create two new variables in the Interval Endpoints format, StartCu and EndCu,
> # that will contain the same information given by the current variables
>
> library(NADA)
> data(CuZn)
> names(CuZn)
>
> StartCu <- ifelse(CuZn$CuCen == "TRUE", 0, CuZn$Cu)
> EndCu <- CuZn$Cu
>
> CuIEP = data.frame(cbind(Cu = CuZn$Cu, CuCen = CuZn$CuCen, StartCu, EndCu))
>
> class(CuZn$CuCen)
> #returns "logical"
> class(CuIEP$CuCen)
> #returns "numeric"
>
> CuIEP2 = data.frame(cbind(Cu = CuZn$Cu, CuCen = as.logical(CuZn$CuCen), StartCu, EndCu))
> class(CuIEP2$CuCen)
> #returns "numeric"
>
> CuIEP3 = data.frame(cbind(Cu = CuZn$Cu, CuCen = I(CuZn$CuCen), StartCu, EndCu))
> class(CuIEP3$CuCen)
> #returns "numeric"
>
> I think that I might be missing something fairly fundamental about data coercion in R.   ... would love to figure this out.
>
> Any assistance would be appreciated.
>
> Thanks much,
>
> Matt Findley
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

-- 
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



More information about the R-help mailing list