all.equal {base} | R Documentation

## Test if Two Objects are (Nearly) Equal

### Description

`all.equal(x,y)` is a utility to compare R objects `x` and `y` testing ``near equality''. If they are different, comparison is still made to some extent, and a report of the differences is returned.

### Usage

    all.equal(target, current, ...)

    all.equal.numeric(target, current,
                      tolerance= .Machine$double.eps ^ 0.5, scale=NULL)

### Details

There are several methods available, most of which are dispatched by the default method, see `methods("all.equal")`. `all.equal.list` and `all.equal.language` provide comparison of recursive objects.

Numerical comparison is done using averge (`mean`) relative error, unless `scale` is used or when the absolute difference is less than `tolerance`. For complex arguments, `Mod` of difference is used.

`attr.all.equal` is used for comparing `attributes`, returning `NULL` or `character`.

### Value

Either `TRUE` or a vector of `mode` `"character"` describing the differences between `target` and `current`.

Numerical differences are reported by relative error

### See Also

`==`, and `all` for exact equality testing.

### Examples

    all.equal(pi, 355/113) # not precise enough (default tol) > relative error

    stopifnot(
    all.equal(gamma(2:14),   cumprod(1:13))) # TRUE, but

    all      (gamma(2:14) == cumprod(1:13)) # FALSE, since not exactly
    all.equal(gamma(2:14),   cumprod(1:13), tol=0) # to see difference

    all.equal(options(), .Options)
    all.equal(options(), as.list(.Options))# TRUE
    .Options $ myopt <- TRUE
    all.equal(options(), as.list(.Options))
    rm(.Options)

[Package Contents]