[R] or of a logical vector
Baskin, Robert
RBaskin at ahrq.gov
Thu Aug 5 21:15:22 CEST 2004
I don't know how careful about coercing type you need to be.
Something like TRUE %in% outer(v,v,"|") may work for you but simpler
functions that do arithmetic and coerce the answer back to logical [e.g.,
as.logical(max(v))] might suffice.
> xt <- c(T,T,T)
> xf <- c(T,F,F)
> outer(xt, xf, "|")
[,1] [,2] [,3]
[1,] TRUE TRUE TRUE
[2,] TRUE TRUE TRUE
[3,] TRUE TRUE TRUE
> outer(xf, xf, "|")
[,1] [,2] [,3]
[1,] TRUE TRUE TRUE
[2,] TRUE FALSE FALSE
[3,] TRUE FALSE FALSE
> TRUE %in% outer(xf, xf, "|")
[1] TRUE
> TRUE %in% outer(!xt, !xt, "|")
[1] FALSE
> #if you don't mind sloppiness
> as.logical(max(xf))
[1] TRUE
> as.logical(max(!xt))
[1] FALSE
> as.logical(sum(xf^2))
[1] TRUE
> as.logical(sum((!xt)^2))
[1] FALSE
> #be careful
> as.logical(max(c(-1,0,0))
+ )
[1] FALSE
>
bob
-----Original Message-----
From: Ben Wittner [mailto:bwittner at jimmy.harvard.edu]
Sent: Thursday, August 05, 2004 12:38 PM
To: r-help at stat.math.ethz.ch
Subject: [R] or of a logical vector
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
}
______________________________________________
R-help at stat.math.ethz.ch mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html
More information about the R-help
mailing list