spam (version 2.5-1)

allequal: Test if Two 'spam' Objects are (Nearly) Equal

Description

Utility to compare two spam objects testing 'near equality'. Depending on the type of difference, comparison is still made to some extent, and a report of the differences is returned.

Usage

# S3 method for spam
all.equal(target, current, tolerance = .Machine$double.eps^0.5,
    scale = NULL, check.attributes = FALSE,...)

Arguments

target

a spam object.

current

another spam object to be compared with target.

tolerance

numeric >= 0. Differences smaller than tolerance are not considered.

scale

numeric scalar > 0 (or NULL). See ‘Details’.

check.attributes

currently not yet implemented.

...

Further arguments for different methods.

Value

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

Details

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.

Do not use all.equal.spam directly in if expressions: either use isTRUE( all.equal.spam(...)) or identical if appropriate.

Cholesky decomposition routines use this function to test for symmetry.

A method for matrix-spam objects is defined as well.

There is the additional catch of a zero matrix being represented by one zero element, see ‘Examples’ below.

See Also

isSymmetric.spam and cleanup.

Examples

Run this code
# NOT RUN {
obj <- diag.spam(2)
obj[1,2] <- .Machine$double.eps

all.equal( diag.spam(2), obj)

all.equal( t(obj), obj)

all.equal( t(obj), obj*1.1)

# We can compare a spam to a matrix
all.equal(diag(2),diag.spam(2))

# the opposite does often not make sense,
# hence, it is not implemented.
all.equal(diag.spam(2),diag(2))


# A zero matrix contains one element:
str(spam(0))
# hence
all.equal.spam(spam(0,3,3), diag.spam(0,3) )
norm(spam(0,3,3) - diag.spam(0,3) ) 
# }

Run the code above in your browser using DataCamp Workspace