[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