Skip to content

all.equal() and which()

3 messages · Tom, Marc Schwartz (via MN), Patrick Burns

Tom
#
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
#
On Fri, 2006-02-03 at 10:41 -0500, tom wright wrote:
There might be an easier way, but here is one approach:
[1] 24.209 24.210 24.211 24.212 24.213 24.214 24.215 24.216 24.217
[10] 24.218 24.219
[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():
[1] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

See ?all.equal and ?isTRUE for more information.

HTH,

Marc Schwartz
#
How about

which(abs(time(data) - 24.211) < 1e-7)

or the tolerance of your choice.

Patrick Burns
patrick at burns-stat.com
+44 (0)20 8525 0696
http://www.burns-stat.com
(home of S Poetry and "A Guide for the Unwilling S User")
tom wright wrote: