| allequal {spam} | R Documentation |
Test if Two Sparse Matrices 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 class 'spam'
all.equal(target, current, tolerance = .Machine$double.eps^0.5,
scale = NULL, check.attributes = FALSE,...)
Arguments
target |
a |
current |
another |
tolerance |
numeric >= 0. Differences smaller than
|
scale |
numeric scalar > 0 (or |
check.attributes |
currently not yet implemented. |
... |
Further arguments for different methods. |
Details
Numerical comparisons for scale = NULL (the default) are
typically on a relative difference scale unless the
target values are close to zero or infinite. Specifically,
the scale is computed as the average absolute value of target.
If this scale is finite and exceeds tolerance, differences
are expressed relative to it; otherwise, absolute differences are used.
If scale is numeric (and positive), absolute comparisons are
made after scaling (dividing) by scale. Note that if all of
scale is sufficiently close to 1 (specifically, within tolerance),
the difference is still reported as being on an absolute 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.
Value
Either TRUE or a vector of 'mode' "character" describing the
differences between target and current.
Author(s)
Reinhard Furrer
See Also
isSymmetric.spam and cleanup.
Examples
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) )