Translated mysetdiff() (#3)

This commit is contained in:
Waldir Leoncio 2022-07-28 14:43:04 +02:00
parent 84e0eb61d8
commit 86a5dda6d6
2 changed files with 21 additions and 0 deletions

18
R/mysetdiff.R Normal file
View file

@ -0,0 +1,18 @@
mysetdiff <- function(A, B) {
# MYSETDIFF Set difference of two sets of positive integers (much faster than
# built - in setdiff)
# C <- mysetdiff(A, B)
# C <- A \ B = { things in A that are not in B }
# MATLAB Original by Kevin Murphy, modified by Leon Peshkin
if (is.null(A)) {
return(vector())
} else if (is.null(B)) {
return(A)
} else { # both non-empty
bits <- zeros(1, base::max(base::max(A), base::max(B)))
bits[A] <- 1
bits[B] <- 0
C <- A[as.logical(bits[A])]
}
return(C)
}