[Rd] mean relative differences from all.equal() (PR#9276)

MSchwartz at mn.rr.com MSchwartz at mn.rr.com
Thu Oct 5 03:22:57 CEST 2006


On Thu, 2006-10-05 at 03:10 +0200, bchristo at email.arizona.edu wrote:
> Full_Name: Brad Christoffersen
> Version: 2.3.1
> OS: Windows XP
> Submission from: (NULL) (128.196.193.132)
> 
> 
> Why is the difference between two numbers so different from the "mean relative
> difference" output from the all.equal() function?  Is this an artifact of the
> way R stores numerics?  I could not find this problem as I searched through the
> submitted bugs. But I am brand new to R so I apologize if there is something
> obvious I'm missing here.
> 
> rm(list=ls(all=TRUE))  ## Remove all objects that could hinder w/ consistent
> output
> a <- 204
> b <- 203.9792
> all.equal(a,b)
> [1] "Mean relative  difference: 0.0001019608"
> a - b
> [1] 0.0208

Read the Details section of ?all.equal, which states:

Numerical comparisons for scale = NULL (the default) are done by first
computing the mean absolute difference of the two numerical vectors. If
this is smaller than tolerance or not finite, absolute differences are
used, otherwise relative differences scaled by the mean absolute
difference.

If scale is positive, absolute comparisons are made after scaling
(dividing) by scale


Thus on R version 2.4.0 (2006-10-03):

> all.equal(a, b, scale = 1)
[1] "Mean scaled  difference: 0.0208"


Please do not report doubts about behavior as bugs.  Simply post a query
on r-help first. If it is a bug, somebody will confirm it and you can
then report it as such.

BTW, time to upgrade...Go Wildcats!

HTH,

Marc Schwartz




More information about the R-devel mailing list