For some reason `match()` treats `NaN`'s as comparables by default:

> x <- c(1,2,3,NaN,4,5)
> match(x,x)
[1] 1 2 3 4 5 6

which I can override when using `match()` directly:

> match(x,x,incomparables=NaN)
[1]  1  2  3 NA  5  6

but not necessarily when calling a function that uses `match()` internally:

> stats::ecdf(x)(x)
[1] 0.2 0.4 0.6 0.8 0.8 1.0

Obviously there are workarounds for any given scenario, but the bigger
problem is that this behavior causes difficult to discover bugs.  For
example, the behavior of stats::ecdf is definitely a bug introduced by it's
use of `match()` (unless you think NaN == 4 is correct).

Is there a good reason that NaN's are treated as comparables by match(), or
his this a bug?

For reference, I'm using R version 3.2.3

-Jason

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to