ourMELONS/R/myunion.R

32 lines
561 B
R
Raw Permalink Normal View History

myunion <- function(A, B) {
2022-12-22 13:36:07 +01:00
# MYUNION Union of two sets of positive integers (much faster than built - in union)
# C <- myunion(A, B)
2022-12-22 13:36:07 +01:00
if (is.null(A)) {
ma <- 0
} else {
ma <- max(A)
}
2022-12-22 13:36:07 +01:00
if (is.null(B)) {
mb <- 0
} else {
mb <- max(B)
}
2022-12-22 13:36:07 +01:00
if (ma == 0 & mb == 0) {
C <- vector()
} else if (ma == 0 & mb > 0) {
C <- B
} else if (ma > 0 & mb == 0) {
C <- A
} else {
# bits <- sparse(1, max(ma, mb))
bits <- zeros(1, max(c(ma, mb)))
bits[A] <- 1
bits[B] <- 1
C <- find(bits)
}
return(C)
}