Re: [R] all.equal() and which()

From: Marc Schwartz (via MN) <mschwartz_at_mn.rr.com>
Date: Sat 04 Feb 2006 - 07:51:17 EST

On Fri, 2006-02-03 at 10:41 -0500, tom wright wrote:
> Please excuse the lack of a complete dataset here, if its needed I'll be
> happy to provide it.
> Can anyone show me how to rewrite this?
>
> Browse[1]> time(data)[24210:24220]
> [1] 24.209 24.210 24.211 24.212 24.213 24.214 24.215 24.216 24.217
> [10] 24.218 24.219
>
> Browse[1]> which(time(data)==24.211)
> numeric(0)
>
> I'm assuming its an eps fault but
> which(all.equal(time(data),24.211))
>
> dosnt seem to work

There might be an easier way, but here is one approach:

> mydat

 [1] 24.209 24.210 24.211 24.212 24.213 24.214 24.215 24.216 24.217 [10] 24.218 24.219

> which(sapply(mydat, function(x) isTRUE(all.equal(24.211, x))))
[1] 3

This uses sapply() to check each element of 'mydat' against the target value of 24.211. The use of 'isTRUE(all.equal(...))' returns a boolean result of either TRUE or FALSE, enabling the use of which() against the vector returned from sapply():

> sapply(mydat, function(x) isTRUE(all.equal(24.211, x)))
 [1] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE See ?all.equal and ?isTRUE for more information.

HTH, Marc Schwartz



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Sat Feb 04 07:59:49 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Mon 29 May 2006 - 08:10:31 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.