[R] basic dataframe question
Matthew.Findley at ch2m.com
Matthew.Findley at ch2m.com
Wed Sep 3 06:00:17 CEST 2008
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
More information about the R-help
mailing list