[R] ifelse problem - bug or operator error

Bert Gunter gunter.berton at gene.com
Fri Aug 24 22:49:37 CEST 2012


... and if Michael is correct, there is a lesson here: Think of how
much time and aggravation you would have saved yourself if you had
FIRST made an effort to read the docs. The FAQ's are there for a
reason. As is An Introduction to R, which also should be read before
posting on this list.

If Michael is wrong, then the above homily should be amended to:
If you have not already done so, read the FAQ's and An Introduction to
R. You will save yourself -- and us -- much time and effort by doing
so.

Thus endeth the lesson.

-- Bert

On Fri, Aug 24, 2012 at 1: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.
>
> ______________________________________________
> 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.



-- 

Bert Gunter
Genentech Nonclinical Biostatistics

Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm




More information about the R-help mailing list