[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