[R] or of a logical vector
(Ted Harding)
Ted.Harding at nessie.mcc.ac.uk
Thu Aug 5 21:22:12 CEST 2004
On 05-Aug-04 Ben Wittner wrote:
> Is there some fast (built-in?) way to get the OR of all the
> elements in a logical vector?
>
> In other words, is there some fast (built-in) version of the function
> vor below?
>
> Thanks.
>
> -Ben
>
> vor <- function(v) {
> ans <- v[1]
> if (length(v) > 1)
> for (i in 2:length(v))
> ans <- ans | v[i]
> ans
> }
It's a sort of cheating ("type-punning"), but so long as it's just
the "or" you're after then
sum(v)>0
will implement your 'vor', i.e. give you FALSE if all v[i]==FALSE,
and TRUE if any v[i]==TRUE. And it's certainly fast.
Similarly,
prod(v)>0
would implement a 'vand'.
But you can also do these with 'any' and 'all', e.g.
any(v==TRUE)
and
all(v==TRUE)
I'm not sure which of these two approaches would be faster, but
I doubt there's much in it.
Best wishes,
Ted.
--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at nessie.mcc.ac.uk>
Fax-to-email: +44 (0)870 167 1972
Date: 05-Aug-04 Time: 20:22:12
------------------------------ XFMail ------------------------------
More information about the R-help
mailing list