Fast versions of union(), intersect(), setdiff(), symmetric difference and setequal() for integers.

bit_union(x, y)

bit_intersect(x, y)

bit_setdiff(x, y)

bit_symdiff(x, y)

bit_setequal(x, y)

Arguments

x

an integer vector

y

an integer vector

Value

an integer vector

Details

determines the range of the integers and checks if the density justifies use of a bit vector; if yes, uses a bit vector for finding duplicates; if no, falls back to union(), intersect(), setdiff(), union(setdiff(x, y), setdiff(y, x)) and setequal()

Functions

  • bit_union(): union

  • bit_intersect(): intersection

  • bit_setdiff(): asymmetric difference

  • bit_symdiff(): symmetricx difference

  • bit_setequal(): equality

Examples

bit_union(1:2, 2:3)
#> [1] 1 2 3
bit_intersect(1:2, 2:3)
#> [1] 2
bit_setdiff(1:2, 2:3)
#> [1] 1
bit_symdiff(1:2, 2:3)
#> [1] 1 3
bit_setequal(1:2, 2:3)
#> [1] FALSE
bit_setequal(1:2, 2:1)
#> [1] TRUE