all.equal
Test Two Objects for Full Equality
Description
Tests the two specified functions for differences.
This function is an S Version 3 generic (see Methods).
You can write method functions to handle specific
S Version 3 classes of data.
Classes that have methods for this function include numeric,
factor, and the default method.
Usage
all.equal(target, current, ...)
## S3 method for class 'POSIXct':
all.equal(target, current, ..., scale = 1)
Arguments
target, current |
two objects asserted to be the result of equivalent computations.
For example, these can be the same computation on two different
computers, or a revised but still correct version of the same
computation. By convention, the first argument is the considered the
correct version, usually from an object stored after earlier
computation. The second argument is the result of a computation
just completed, whose correctness is to be tested.
|
scale |
a numeric value specifying the desired scaling of the mean absolute difference.
For scale=1, you get the equivalent of absolute scaling, although the output will read "Mean scaled difference:".
|
... |
other arguments you can apply to the method functions. See
Details.
|
Details
The
all.equal methods usually report differences--even
those that you might consider irrelevant.
The only substantial leniency in the default methods is that
numerical equality is tested only up to
tolerance.
You can build in additional leniency by writing methods for
special classes of objects.
- For comparing numeric objects, you can pass the function
tolerance, an argument used only by methods for
numeric objects. The default is the square root of the machine
precision for double-precision computations
(.Machine$double.eps^0.5). The tolerance test used is the absolute difference if the target
value is near zero and the relative difference is otherwise, measured
in mean absolute values (not the mean square).
- For comparing numeric objects, you can pass the numeric value
scale, specifying the desired scaling of the mean absolute
difference. The default is NULL. For scale=1, you
get the equivalent of absolute scaling, although the output reads
"Mean scaled difference:".
- For the numeric, the factor, or the generic method, you can pass
check.attributes, a logical value. If TRUE, the
attributes of the target and current objects are compared;
otherwise the attribute values are ignored.
The order of the attributes is not important for the comparison.
Value
returns TRUE if all components and attributes of the two
objects are equal; otherwise, it returns a character vector containing
all discovered differences.
The all.equal.POSIXct() either returns the mean difference
of the given dates with specified scale or a logical value TRUE
if both target and current are equal.
See Also
Examples
all.equal(c(1,2,3), c(1,2,3))
# [1] TRUE
all.equal(c(1,2,3), c(1,2+1e-5,3))
# [1] "Mean relative difference: 5e-006"
all.equal(c(1,2,3), c(1,2+1e-5,3), tolerance=1e-4)
# [1] TRUE
all.equal(structure(1:3, foo=1), structure(1:3, foo=2))
# [1] "Attributes: < Component foo: Mean relative difference: 1 >"
all.equal(structure(1:3, foo=1), structure(1:3, foo=2),
check.attributes=FALSE)
# [1] TRUE
## POSIXct
x <- as.POSIXct("1970-01-01 00:00:00")
all.equal(x, x - 3, scale = 5)
y <- x
attr(y, "tzone") <- "Asia/Shanghai"
all.equal(x, y)
z <- x
attr(z, "tzone") <- "America/New_York"
all.equal(y, z)