[Rd] match() is not correct for "close numerics" (PR#741)
maechler@stat.math.ethz.ch
maechler@stat.math.ethz.ch
Tue, 21 Nov 2000 16:15:19 +0100 (MET)
(thank to David James <dj@research.bell-labs.com> )
This is for R versions <= 1.1.1 and also R-devel as of yesterday..
> pi0 <- pi + 2*.Machine$double.eps
> pi != pi0
[1] TRUE
> ## but
> match(c(1,pi,pi0), pi)
[1] NA 1 1
The explanation is
> match
function(x, table, nomatch=NA)
.Internal(match(as.character(x), as.character(table), nomatch))
and using
> match <- function(x, table, nomatch=NA) .Internal(match(x, table, nomatch))
would solve the above problem
*but* gives new ones: e.g., factor() has to be modified !
Martin Maechler <maechler@stat.math.ethz.ch> http://stat.ethz.ch/~maechler/
Seminar fuer Statistik, ETH-Zentrum LEO D10 Leonhardstr. 27
ETH (Federal Inst. Technology) 8092 Zurich SWITZERLAND
phone: x-41-1-632-3408 fax: ...-1228 <><
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._