Skip to content
Prev 256036 / 398506 Next

problem with all/all.equal

Hi Laura,

You have gotten several good suggestions.  Here are two more that may
be helpful if you have (or potentially could have) unruly data.  In
one case, the values are theoretically, but not computationally
identical.  In the other, missing values lead to NA being returned,
which may be a problem if you are using the logical test with an if()
statement.

### Two pathologic examples ###
# One: the floating point problem
all((x <- c(1 - .4, .4 + .2)) == x[1])
ifelse(length(unique(x))==1, "All Equal", "Not All Equal")
print(x, digits = 22)
## another option
tol <- .Machine$double.eps^0.5 # standard tolerance
all(x < x[1] + tol | x > x[1] - tol)
# Two: the missing problem
x <- c(NA, NA)
all(x < x[1] + tol | x > x[1] - tol)
## another option
isTRUE(all(x < x[1] + tol | x > x[1] - tol))

Best Regards,

Josh
On Wed, Apr 6, 2011 at 3:09 PM, Laura Smith <smithlaura937 at gmail.com> wrote: