# Re: [R] Odp: strange issue with "which" on "seq"

From: Henrik Bengtsson <hb_at_stat.berkeley.edu>
Date: Wed, 09 Jun 2010 14:35:43 +0200

On Wed, Jun 9, 2010 at 2:20 PM, Nikhil Kaza <nikhil.list_at_gmail.com> wrote:
> which(abs(v - .1) <= .Machine\$double.eps)
>
> seems to me too cumbersome to write. Any other easier way? all.equal does
> not quite work

See isZero() in R.utils, e.g.

isZero(abs(v - 0.1));

You can adjust the precision with argument 'neps' (a scale factor of 'eps' specifying how close to "close" means) by:

isZero(abs(v - 0.1), neps=5);

The default is eps=.Machine\$double.eps and neps=1.

You can also do things as:

isZero(abs(v - 0.1), eps=1e-4);

It returns a logical vector. You have to apply which() to get the TRUE indices.

/Henrik

>
> Nikhil
>
> On Jun 9, 2010, at 7:54 AM, Petr PIKAL wrote:
>
>> Hi
>>
>> r-help-bounces_at_r-project.org napsal dne 09.06.2010 13:16:40:
>>
>>> Dear R community,
>>> I am puzzled by the following lines:
>>>
>>>> v <- seq(-0.5,0.5,by=0.1)
>>>> v
>>>
>>>  [1] -0.5 -0.4 -0.3 -0.2 -0.1  0.0  0.1  0.2  0.3  0.4  0.5
>>>>
>>>> which(v == -0.4)
>>>
>>>  [1] 2
>>>>
>>>> which(v == 0)
>>>
>>>  [1] 6
>>>>
>>>> which(v == 0.1)
>>>
>>> integer(0)
>>>>
>>>> which(v == 0.2)
>>>
>>> integer(0)
>>>>
>>>> which(v == 0.3)
>>>
>>> integer(0)
>>>>
>>>> which(v == 0.4)
>>>
>>>  [1] 10
>>>>
>>>> which(v == 0.5)
>>>
>>>  [1] 11
>>>
>>> Why "which" can only match some of the values in "v"? Are the numbers
>>> generated by "seq" not exact fractional numbers?
>>> Please, help me to understand this.
>>
>> Well FAQ 7.31 was not here some time. Computing in binary results in
>> finite precision of fractional numbers.
>>
>> v <- seq(-0.5,0.5,by=0.1)
>> v[7]-0.1
>> [1] 8.326673e-17
>>
>> Regards
>> Petr
>>
>>
>>
>>>
>>> J
>>>
>>> Membrane Protein Laboratory (MPL)
>>> Diamond Light Source Ltd
>>> Diamond House
>>> Harewell Science and Innovation Campus
>>> Chilton, Didcot
>>> Oxfordshire OX11 0DE
>>>
>>>
>>> --
>>> This e-mail and any attachments may contain confidential...{{dropped:8}}
>>>
>>> ______________________________________________
>>> R-help_at_r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>
>> 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
>> 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
> 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. Received on Wed 09 Jun 2010 - 12:37:33 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 09 Jun 2010 - 12:40:30 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.