Fair enough and good point.  How about, dangerous when used unknowingly!

On Tue, Dec 20, 2011 at 1:01 PM, William Dunlap <wdun...@tibco.com> wrote:

> Re
> > your column (i think its called t1d_ptype[1:25]) is a factor and using
> > factors is dangerous at best.
>
> This depends on how you want to define "dangerous".  If t1d_ptype ought
> take values from a certain set of strings then making it a factor gives
> you some safety, since it warns you when you go outside of that set and
> try to give it an illegal value.  E.g.,
>    > sex <- factor(c("M","F","F"), levels=c("F", "M"))
>    > sex[2] <- "no"
>    Warning message:
>    In `[<-.factor`(`*tmp*`, 2, value = "no") :
>       invalid factor level, NAs generated
>
> It does take more work to set up, since you need to enumerate the set
> of good strings.  That is tedium, not danger.
>
> If t1d_ptype might take any value, then make it a character vector.
>
> Bill Dunlap
> Spotfire, TIBCO Software
> wdunlap tibco.com
>
> > -----Original Message-----
> > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org]
> On Behalf Of Justin Haynes
> > Sent: Tuesday, December 20, 2011 11:54 AM
> > To: 1Rnwb
> > Cc: r-help@r-project.org
> > Subject: Re: [R] Help with code
> >
> > the short answer... which is a guess cause you didn't provide a
> > reproducible example... is:
> >
> > your column (i think its called t1d_ptype[1:25]) is a factor and using
> > factors is dangerous at best.
> >
> > you can check with ?str.
> >
> > see ?factor for how to convert back to strings and see if your code
> works.
> >
> >
> >
> > to answer your second question, yes I'm sure there is a better simple way
> > to do this, but i can't follow what you're doing... for example, I don't
> > know what c1 is...
> >
> > but, the place I would look is at the plyr package.  its excellent at
> > splitting and reordering data.
> >
> >
> > and one final note, you should avoid naming things with pre-existing R
> > functions (e.g. data).
> >
> > Justin
> >
> >
> > On Tue, Dec 20, 2011 at 11:14 AM, 1Rnwb <sbpuro...@gmail.com> wrote:
> >
> > > hello gurus,
> > >
> > > i have a data frame like this
> > >   HTN HTN_FDR Dyslipidemia CAD t1d_ptype[1:25]
> > > 1    Y       Y            Y                 T1D
> > > 2                                           T1D
> > > 3                                      Ctrl_FDR
> > > 4                                           T1D
> > > 5            Y                             Ctrl
> > > 6                                          Ctrl
> > > 7                                      Ctrl_FDR
> > > 8                                           T1D
> > > 9            Y            Y                 T1D
> > > 10                                          T1D
> > > 11                                     Ctrl_FDR
> > > 12           Y            Y                 T1D
> > > 13   Y       Y            Y                 T1D
> > > 14                                          T1D
> > > 15                                         Ctrl
> > > 16                                         Ctrl
> > > 17                                     Ctrl_FDR
> > > 18                                          T1D
> > > 19                                          T1D
> > > 20           Y                              T1D
> > > 21                                     Ctrl_FDR
> > > 22                                     Ctrl_FDR
> > > 23                                         Ctrl
> > > 24                                         Ctrl
> > > 25                                          T1D
> > >
> > > i am converting it to define the groups more uniformly using this code:
> > >
> > > for( i in 1:dim(c1)[1])
> > > {
> > >  num_comp<-0
> > >  for (j in 1:dim(c1)[2])
> > >     if (c1[i,j]==2) num_comp=num_comp+1      #"Y"=2
> > >  for (j in 1:dim(c1)[2])
> > >    if(num_comp>0)
> > >    {
> > >          if (data$t1d_ptype[i] == "T1D" && c1[i ,j] == 2)
> c2[i,j]<-"T1D_w"
> > >        if (data$t1d_ptype[i] == "T1D" && c1[i, j] == 1)
>  c2[i,j]<-"T1D_oc"
> > >        if(substr(data$t1d_ptype[i],1,4) == "Ctrl" && c1[i,j] == 2)
> > > c2[i,j]<-"Ctrl_w"
> > >        if (substr(data$t1d_ptype[i],1,4) == "Ctrl" && c1[i,j] == 1)
> > > c2[i,j]<-"Ctrl_oc"
> > >      }
> > >      else
> > >       {
> > >            if(data$t1d_ptype[i] == "T1D") c2[i,j]<-"T1D_noc"
> > >            if(substr(data$t1d_ptype[i],1,4) == "Ctrl")
> c2[i,j]<-"Ctrl_noc"
> > >       }
> > > }
> > >
> > > it is giving me error
> > > In `[<-.factor`(`*tmp*`, iseq, value = structure(c(NA,  ... :
> > >  invalid factor level, NAs generated
> > >
> > > Also it there a simple way to do this.
> > > Thanks
> > > Sharad
> > >
> > > --
> > > View this message in context:
> > > http://r.789695.n4.nabble.com/Help-with-code-tp4218989p4218989.html
> > > Sent from the R help mailing list archive at Nabble.com.
> > >
> > > ______________________________________________
> > > 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]]
> >
> > ______________________________________________
> > 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]]

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

Reply via email to