Hi, It is not clear whether all the variables are factor or only a few are.. dat<- read.table(text="a??????????????? coef?????????????? coef.l????????????? coef.h 1?? 1?? 0.005657825001254? 0.00300612956318132 0.00830952043932667 2?? 2 0.00634505314577229? 0.00334102345418614 0.00934908283735844 3?? 3 0.00368668099805019 0.000289702228748421 0.00708365976735195 4?? 4? 0.0056200291035751? 0.00209123538827368 0.00914882281887651 5?? 5 0.00636609791030242? 0.00269683889899591? 0.0100353569216089",sep="",colClasses=rep("factor",4)) dat1<- dat ?dat[] <- lapply(dat,function(x) as.numeric(as.character(x))) str(dat) #'data.frame':??? 5 obs. of? 4 variables: # $ a???? : num? 1 2 3 4 5 # $ coef? : num? 0.00566 0.00635 0.00369 0.00562 0.00637 # $ coef.l: num? 0.00301 0.00334 0.00029 0.00209 0.0027 # $ coef.h: num? 0.00831 0.00935 0.00708 0.00915 0.01004 # With only a subset of variables in the dataset as factors ?dat1$a<- as.numeric(as.character(dat1$a)) ? dat1[sapply(dat1,is.factor)]<- lapply(dat1[sapply(dat1,is.factor)],function(x) as.numeric(as.character(x))) ?str(dat1) #'data.frame':??? 5 obs. of? 4 variables: # $ a???? : num? 1 2 3 4 5 # $ coef? : num? 0.00566 0.00635 0.00369 0.00562 0.00637 # $ coef.l: num? 0.00301 0.00334 0.00029 0.00209 0.0027 # $ coef.h: num? 0.00831 0.00935 0.00708 0.00915 0.01004 ? A.K. I have a factor data frame which I want to convert to numeric without any change in contents. How could I do that? ? ?a ? ? ? ? ? ? ? ?coef ? ? ? ? ? ? ? coef.l ? ? ? ? ? ? ?coef.h 1 ? 1 ? 0.005657825001254 ?0.00300612956318132 0.00830952043932667 2 ? 2 0.00634505314577229 ?0.00334102345418614 0.00934908283735844 3 ? 3 0.00368668099805019 0.000289702228748421 0.00708365976735195 4 ? 4 ?0.0056200291035751 ?0.00209123538827368 0.00914882281887651 5 ? 5 0.00636609791030242 ?0.00269683889899591 ?0.0100353569216089
data.matrix() should do the job for you Charles On Thu, Oct 10, 2013 at 8:02 AM, arun <smartpink111@yahoo.com> wrote:> Hi, > It is not clear whether all the variables are factor or only a few are.. > > dat<- read.table(text="a coef > coef.l coef.h > 1 1 0.005657825001254 0.00300612956318132 0.00830952043932667 > 2 2 0.00634505314577229 0.00334102345418614 0.00934908283735844 > 3 3 0.00368668099805019 0.000289702228748421 0.00708365976735195 > 4 4 0.0056200291035751 0.00209123538827368 0.00914882281887651 > 5 5 0.00636609791030242 0.00269683889899591 > 0.0100353569216089",sep="",colClasses=rep("factor",4)) > dat1<- dat > > > dat[] <- lapply(dat,function(x) as.numeric(as.character(x))) > > str(dat) > #'data.frame': 5 obs. of 4 variables: > # $ a : num 1 2 3 4 5 > # $ coef : num 0.00566 0.00635 0.00369 0.00562 0.00637 > # $ coef.l: num 0.00301 0.00334 0.00029 0.00209 0.0027 > # $ coef.h: num 0.00831 0.00935 0.00708 0.00915 0.01004 > > > # With only a subset of variables in the dataset as factors > dat1$a<- as.numeric(as.character(dat1$a)) > > > dat1[sapply(dat1,is.factor)]<- > lapply(dat1[sapply(dat1,is.factor)],function(x) as.numeric(as.character(x))) > str(dat1) > #'data.frame': 5 obs. of 4 variables: > # $ a : num 1 2 3 4 5 > # $ coef : num 0.00566 0.00635 0.00369 0.00562 0.00637 > # $ coef.l: num 0.00301 0.00334 0.00029 0.00209 0.0027 > # $ coef.h: num 0.00831 0.00935 0.00708 0.00915 0.01004 > > A.K. > > > > I have a factor data frame which I want to convert to numeric without any > change in contents. How could I do that? > > > a coef coef.l coef.h > 1 1 0.005657825001254 0.00300612956318132 0.00830952043932667 > 2 2 0.00634505314577229 0.00334102345418614 0.00934908283735844 > 3 3 0.00368668099805019 0.000289702228748421 0.00708365976735195 > 4 4 0.0056200291035751 0.00209123538827368 0.00914882281887651 > 5 5 0.00636609791030242 0.00269683889899591 0.0100353569216089 > > ______________________________________________ > R-help@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. >[[alternative HTML version deleted]]
I'm not honestly sure why data.matrix didn't work off hand. Perhaps another user can shed some light on this. An alternative is the following: apply(dat, 2, FUN = function(x) as.numeric(as.character(x))) On Thu, Oct 10, 2013 at 8:26 AM, arun <smartpink111@yahoo.com> wrote:> Did you mean to apply it like this or is it something else? > data.matrix(dat) # > a coef coef.l coef.h > 1 1 3 4 2 > 2 2 4 5 4 > 3 3 1 1 1 > 4 4 2 2 3 > 5 5 5 3 5 > > > A.K. > > > > > > > On Thursday, October 10, 2013 9:09 AM, Charles Determan Jr < > deter088@umn.edu> wrote: > > data.matrix() should do the job for you > > Charles > > > > > On Thu, Oct 10, 2013 at 8:02 AM, arun <smartpink111@yahoo.com> wrote: > > Hi, > >It is not clear whether all the variables are factor or only a few are.. > > > >dat<- read.table(text="a coef > coef.l coef.h > >1 1 0.005657825001254 0.00300612956318132 0.00830952043932667 > >2 2 0.00634505314577229 0.00334102345418614 0.00934908283735844 > >3 3 0.00368668099805019 0.000289702228748421 0.00708365976735195 > >4 4 0.0056200291035751 0.00209123538827368 0.00914882281887651 > >5 5 0.00636609791030242 0.00269683889899591 > 0.0100353569216089",sep="",colClasses=rep("factor",4)) > >dat1<- dat > > > > > > dat[] <- lapply(dat,function(x) as.numeric(as.character(x))) > > > >str(dat) > >#'data.frame': 5 obs. of 4 variables: > ># $ a : num 1 2 3 4 5 > ># $ coef : num 0.00566 0.00635 0.00369 0.00562 0.00637 > ># $ coef.l: num 0.00301 0.00334 0.00029 0.00209 0.0027 > ># $ coef.h: num 0.00831 0.00935 0.00708 0.00915 0.01004 > > > > > ># With only a subset of variables in the dataset as factors > > dat1$a<- as.numeric(as.character(dat1$a)) > > > > > >dat1[sapply(dat1,is.factor)]<- > lapply(dat1[sapply(dat1,is.factor)],function(x) as.numeric(as.character(x))) > > str(dat1) > >#'data.frame': 5 obs. of 4 variables: > ># $ a : num 1 2 3 4 5 > ># $ coef : num 0.00566 0.00635 0.00369 0.00562 0.00637 > ># $ coef.l: num 0.00301 0.00334 0.00029 0.00209 0.0027 > ># $ coef.h: num 0.00831 0.00935 0.00708 0.00915 0.01004 > > > >A.K. > > > > > > > >I have a factor data frame which I want to convert to numeric without any > change in contents. How could I do that? > > > > > > a coef coef.l coef.h > >1 1 0.005657825001254 0.00300612956318132 0.00830952043932667 > >2 2 0.00634505314577229 0.00334102345418614 0.00934908283735844 > >3 3 0.00368668099805019 0.000289702228748421 0.00708365976735195 > >4 4 0.0056200291035751 0.00209123538827368 0.00914882281887651 > >5 5 0.00636609791030242 0.00269683889899591 0.0100353569216089 > > > >______________________________________________ > >R-help@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. > > >-- Charles Determan Integrated Biosciences PhD Candidate University of Minnesota [[alternative HTML version deleted]]
Firstly, please make sure to reply-all so the r-help list also receives these emails. Second, I have just run this sequence as it provides an exact copy with each as numeric. Use the apply function, it iterates over each column and converts each to numeric. dat <- read.table(text="a coef coef.l coef.h 1 1 0.005657825001254 0.00300612956318132 0.00830952043932667 2 2 0.00634505314577229 0.00334102345418614 0.00934908283735844 3 3 0.00368668099805019 0.000289702228748421 0.00708365976735195 4 4 0.0056200291035751 0.00209123538827368 0.00914882281887651 5 5 0.00636609791030242 0.00269683889899591 0.0100353569216089",sep="",colClasses=rep("factor",4)) dat.num <- apply(dat, 2, FUN = function(x) as.numeric(as.character(x))) Charles On Thu, Oct 10, 2013 at 8:37 AM, arun <smartpink111@yahoo.com> wrote:> > > Looks like it is directly doing: > as.numeric() without the as.character() > For ex: > as.numeric(dat[,2]) > #[1] 3 4 1 2 5 > > > > > > On Thursday, October 10, 2013 9:33 AM, Charles Determan Jr < > deter088@umn.edu> wrote: > > I'm not honestly sure why data.matrix didn't work off hand. Perhaps > another user can shed some light on this. An alternative is the following: > > apply(dat, 2, FUN = function(x) as.numeric(as.character(x))) > > > > > On Thu, Oct 10, 2013 at 8:26 AM, arun <smartpink111@yahoo.com> wrote: > > Did you mean to apply it like this or is it something else? > > data.matrix(dat) # > > a coef coef.l coef.h > >1 1 3 4 2 > >2 2 4 5 4 > >3 3 1 1 1 > >4 4 2 2 3 > >5 5 5 3 5 > > > > > >A.K. > > > > > > > > > > > > > >On Thursday, October 10, 2013 9:09 AM, Charles Determan Jr < > deter088@umn.edu> wrote: > > > >data.matrix() should do the job for you > > > >Charles > > > > > > > > > >On Thu, Oct 10, 2013 at 8:02 AM, arun <smartpink111@yahoo.com> wrote: > > > >Hi, > >>It is not clear whether all the variables are factor or only a few are.. > >> > >>dat<- read.table(text="a coef > coef.l coef.h > >>1 1 0.005657825001254 0.00300612956318132 0.00830952043932667 > >>2 2 0.00634505314577229 0.00334102345418614 0.00934908283735844 > >>3 3 0.00368668099805019 0.000289702228748421 0.00708365976735195 > >>4 4 0.0056200291035751 0.00209123538827368 0.00914882281887651 > >>5 5 0.00636609791030242 0.00269683889899591 > 0.0100353569216089",sep="",colClasses=rep("factor",4)) > >>dat1<- dat > >> > >> > >> dat[] <- lapply(dat,function(x) as.numeric(as.character(x))) > >> > >>str(dat) > >>#'data.frame': 5 obs. of 4 variables: > >># $ a : num 1 2 3 4 5 > >># $ coef : num 0.00566 0.00635 0.00369 0.00562 0.00637 > >># $ coef.l: num 0.00301 0.00334 0.00029 0.00209 0.0027 > >># $ coef.h: num 0.00831 0.00935 0.00708 0.00915 0.01004 > >> > >> > >># With only a subset of variables in the dataset as factors > >> dat1$a<- as.numeric(as.character(dat1$a)) > >> > >> > >>dat1[sapply(dat1,is.factor)]<- > lapply(dat1[sapply(dat1,is.factor)],function(x) as.numeric(as.character(x))) > >> str(dat1) > >>#'data.frame': 5 obs. of 4 variables: > >># $ a : num 1 2 3 4 5 > >># $ coef : num 0.00566 0.00635 0.00369 0.00562 0.00637 > >># $ coef.l: num 0.00301 0.00334 0.00029 0.00209 0.0027 > >># $ coef.h: num 0.00831 0.00935 0.00708 0.00915 0.01004 > >> > >>A.K. > >> > >> > >> > >>I have a factor data frame which I want to convert to numeric without > any change in contents. How could I do that? > >> > >> > >> a coef coef.l coef.h > >>1 1 0.005657825001254 0.00300612956318132 0.00830952043932667 > >>2 2 0.00634505314577229 0.00334102345418614 0.00934908283735844 > >>3 3 0.00368668099805019 0.000289702228748421 0.00708365976735195 > >>4 4 0.0056200291035751 0.00209123538827368 0.00914882281887651 > >>5 5 0.00636609791030242 0.00269683889899591 0.0100353569216089 > >> > >>______________________________________________ > >>R-help@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. > >> > > > > > -- > > Charles Determan > Integrated Biosciences PhD Candidate > University of Minnesota >-- Charles Determan Integrated Biosciences PhD Candidate University of Minnesota [[alternative HTML version deleted]]