[R] problem with all/all.equal

Joshua Wiley
Thu, 07 Apr 2011 04:23:07 -0000

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:
> Hi!
>
> In a function, I may have an instance in which all elements are equal.
>
>> x <- rep(1,5)
>>
>> x
> [1] 1 1 1 1 1
>> identical(x)
> Error in .Internal(identical(x, y, num.eq, single.NA, attrib.as.set)) :
> ?'y' is missing
>> all.equal(x)
> Error in is.expression(x) : 'x' is missing
>>
>
> I don't care what particular value it is, I just want to know if they
are
> all equal.
>
> What am I doing wrong, please?
>
> Thanks,
> Laura
>
> ? ? ? ?[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



--
Joshua Wiley
Ph.D. Student, Health Psychology
University of California, Los Angeles