An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110406/7a2aea9e/attachment.pl>
problem with all/all.equal
6 messages · Laura Smith, Peter Langfelder, Brad Patrick Schneid +3 more
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
all looks at a logical vector (or two), and all.equal compares two objects. For your purposes, you can ask whether all (x==x[1]) for example. Peter
ifelse(length(unique(x))==1, "All Equal", "Not All Equal") -- View this message in context: http://r.789695.n4.nabble.com/problem-with-all-all-equal-tp3431956p3432167.html Sent from the R help mailing list archive at Nabble.com.
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 http://www.joshuawiley.com/
On Wed, Apr 6, 2011 at 9:23 PM, Joshua Wiley <jwiley.psych at gmail.com> wrote:
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)
or briefer
all(abs(x-x[1]) < tol)
or, by first doing library("R.utils"),
all(isZero(x-x[1]))
# Two: the missing problem x <- c(NA, NA) all(x < x[1] + tol | x > x[1] - tol)
or all(x < x[1] + tol | x > x[1] - tol, na.rm=TRUE) or all(isZero(x-x[1]), na.rm=TRUE) My $.02 /Henrik
## 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 http://www.joshuawiley.com/
______________________________________________ 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.
6 days later
The help pages for identical() and all.equal() have information that will make it clear why they don't do what you want. In the meantime, I tend to use a construct such as: length(unique(x))==1 But be careful if x is not a vector. No doubt there are other ways. -Don
Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062 -----Original Message----- From: Laura Smith <smithlaura937 at gmail.com> Date: Wed, 6 Apr 2011 15:09:14 -0700 To: "r-help at r-project.org" <r-help at r-project.org> Subject: [R] problem with all/all.equal >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.