[R] ifelse problem - bug or operator error

Jennifer Sabatier plessthanpointohfive at gmail.com
Fri Aug 24 22:43:21 CEST 2012


Oops, sorry, I thought I was in plain text.  I can't tell the
difference because I use so little formatting in my emails.

Try this (a truncated version since I have to hand space everything):

PM.EXP	PM.DIST.TOT	PM.DIST_flag
0	       0	                        0
6417       1	                        1
23	       1	                        0
97691	2	                        1
0	       0	                        0
33993	2	                        1


On Fri, Aug 24, 2012 at 4:36 PM, R. Michael Weylandt
<michael.weylandt at gmail.com> wrote:
>
> On Fri, Aug 24, 2012 at 3:22 PM, Jennifer Sabatier
> <plessthanpointohfive at gmail.com> wrote:
> > Hi R-Helpers,
> >
> > I don't think I need to post a dataset for this question but if I do, I
> > can.  Anyway, I am having a lot of trouble with the ifelse command.
> >
> You probably should have: dput() makes it super easy as well.
>
> > Here is my code:
> >
> >
> > vn$PM.DIST_flag <- ifelse( (vn$PM.EXP > 0.0) & (vn$PM.DIST.TOT != 1.0),
> > 1,
> > 0 )
> >
> >
> > And here is my output that doesn't make ANY sense:
> >
> >   PM.EXP PM.DIST.TOT PM.DIST_flag  0 0 0  0 0 0  0 0 0  177502 1 0
> > 31403 1
> > 0  0 0 0  1100549 1 0  38762 1 0  0 0 0  20025 1 0  0 0 0  13742 1 0  0
> > 0 0
> > 83078 1 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
> > 165114 1 0  0 0 0  417313 1 0  3546 1 0  4613 1 0  225460 1 0  6417 1 1
> > 23
> > 1 0  3402 1 0  8504 1 1  8552 1 0  9723 1 0  37273 1 1  396 1 0  1478 1
> > 0
> > 2074 1 0  12220 1 1  97691 2 1  0 0 0  33993 2 1
>
> Indeed it makes no sense to me either because you sent HTML email
> which got mangled by the server.
>
> >
> > As you can see, there are many instances where PM.EXP > 0 and
> > PM.DIST.TOT =
> > 1 yet PM.DIST_flag = 1 and it should be 0.  It should only flag in cases
> > such as the last line of data.
> >
> > WWHHHYYYYYYYY???? Why why why why why why why? Why?
> >
> > (Sorry, I've been trying to figure this out for hours and I've devolved
> > to
> > mumbling in corners and banging my head against the table)
> >
> > What in the world am I doing wrong?  Or is ifelse not the right
> > function?
>
> First guess.... standard problems with equality of floating point
> numbers. (See R FAQ 7.31 for the details)
>
> You probably want to change
>
> x == 1
>
> to
>
> abs(x - 1) < 1e-05
>
> or something similar.
>
> Cheers,
> Michael
>
> >
> > Best,
> >
> > Jen
> >
> >         [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > 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.




More information about the R-help mailing list