Hi,

Thanks for the help.  Both of the responses work the way I need it to.

Cheers,
Peter


On Thu, May 30, 2013 at 4:34 AM, Rui Barradas <ruipbarradas@sapo.pt> wrote:

> Hello,
>
> You can write a helper function.
>
> are.equal <- function(x, y, eps = .Machine$double.eps^0.5) abs(x - y) < eps
>
> x[are.equal(x, 0.15)]
>
>
> Hope this helps,
>
> Rui Barradas
>
> Em 30-05-2013 02:27, Peter Lomas escreveu:
>
>> Hello,
>>
>> I have a whole bunch of data to two decimal places.  I've done some
>> arithmetic with them, so floating point becomes an issue.
>>
>> x <- c(1, 0.15,(0.1+.05),0.4)
>>
>> I want to do something like this:
>>
>> x[x==0.15]
>>
>> But you'll notice that is troublesome with the well known floating point
>> issue.  So really I need to do something like this:
>>
>> x[all.equal(x, 0.15)]
>>
>> But that doesn't work because all.equal wants to compare objects and not
>> each element.
>>
>> I could do:
>>
>> x[round(x,2) ==0.15]
>>
>> It seems to work in this case, but as I've been working with my data I'm
>> concerned its unreliable.  What is the most efficient way of subsetting
>> data using a machine-tolerance equal numeric value?
>>
>> Thanks R-Helpers.
>>
>> Peter
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________**________________
>> R-help@r-project.org mailing list
>> https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help>
>> PLEASE do read the posting guide http://www.R-project.org/**
>> posting-guide.html <http://www.R-project.org/posting-guide.html>
>> and provide commented, minimal, self-contained, reproducible code.
>>
>>

	[[alternative HTML version deleted]]

