These functions override the set functions provided in base to make them generic so that efficient versions for data frames and other tables can be provided. The default methods call the base versions. Beware that intersect(), union() and setdiff() remove duplicates.

union_all(x, y, ...)

Arguments

x, y

objects to perform set function on (ignoring order)

...

other arguments passed on to methods

Examples

mtcars$model <- rownames(mtcars)
first <- mtcars[1:20, ]
second <- mtcars[10:32, ]

intersect(first, second)
#>                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
#> Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
#> Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
#> Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
#> Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
#> Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
#> Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
#> Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
#> Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
#> Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
#> Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
#>                                   model
#> Merc 280                       Merc 280
#> Merc 280C                     Merc 280C
#> Merc 450SE                   Merc 450SE
#> Merc 450SL                   Merc 450SL
#> Merc 450SLC                 Merc 450SLC
#> Cadillac Fleetwood   Cadillac Fleetwood
#> Lincoln Continental Lincoln Continental
#> Chrysler Imperial     Chrysler Imperial
#> Fiat 128                       Fiat 128
#> Honda Civic                 Honda Civic
#> Toyota Corolla           Toyota Corolla
union(first, second)
#>                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
#> Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
#> Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
#> Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
#> Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
#> Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
#> Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
#> Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
#> Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
#> Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
#> Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
#> Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
#> Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
#> Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
#> Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
#> Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
#> Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
#> Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
#> Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
#> Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
#> Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
#> AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
#> Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
#> Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
#> Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
#> Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
#> Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
#> Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
#> Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
#> Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
#> Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
#>                                   model
#> Mazda RX4                     Mazda RX4
#> Mazda RX4 Wag             Mazda RX4 Wag
#> Datsun 710                   Datsun 710
#> Hornet 4 Drive           Hornet 4 Drive
#> Hornet Sportabout     Hornet Sportabout
#> Valiant                         Valiant
#> Duster 360                   Duster 360
#> Merc 240D                     Merc 240D
#> Merc 230                       Merc 230
#> Merc 280                       Merc 280
#> Merc 280C                     Merc 280C
#> Merc 450SE                   Merc 450SE
#> Merc 450SL                   Merc 450SL
#> Merc 450SLC                 Merc 450SLC
#> Cadillac Fleetwood   Cadillac Fleetwood
#> Lincoln Continental Lincoln Continental
#> Chrysler Imperial     Chrysler Imperial
#> Fiat 128                       Fiat 128
#> Honda Civic                 Honda Civic
#> Toyota Corolla           Toyota Corolla
#> Toyota Corona             Toyota Corona
#> Dodge Challenger       Dodge Challenger
#> AMC Javelin                 AMC Javelin
#> Camaro Z28                   Camaro Z28
#> Pontiac Firebird       Pontiac Firebird
#> Fiat X1-9                     Fiat X1-9
#> Porsche 914-2             Porsche 914-2
#> Lotus Europa               Lotus Europa
#> Ford Pantera L           Ford Pantera L
#> Ferrari Dino               Ferrari Dino
#> Maserati Bora             Maserati Bora
#> Volvo 142E                   Volvo 142E
setdiff(first, second)
#>                    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
#> Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
#> Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
#> Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
#> Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
#> Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
#> Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
#> Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
#>                               model
#> Mazda RX4                 Mazda RX4
#> Mazda RX4 Wag         Mazda RX4 Wag
#> Datsun 710               Datsun 710
#> Hornet 4 Drive       Hornet 4 Drive
#> Hornet Sportabout Hornet Sportabout
#> Valiant                     Valiant
#> Duster 360               Duster 360
#> Merc 240D                 Merc 240D
#> Merc 230                   Merc 230
setdiff(second, first)
#>                   mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> Toyota Corona    21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
#> Dodge Challenger 15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
#> AMC Javelin      15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
#> Camaro Z28       13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
#> Pontiac Firebird 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
#> Fiat X1-9        27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
#> Porsche 914-2    26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
#> Lotus Europa     30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
#> Ford Pantera L   15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
#> Ferrari Dino     19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
#> Maserati Bora    15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
#> Volvo 142E       21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
#>                             model
#> Toyota Corona       Toyota Corona
#> Dodge Challenger Dodge Challenger
#> AMC Javelin           AMC Javelin
#> Camaro Z28             Camaro Z28
#> Pontiac Firebird Pontiac Firebird
#> Fiat X1-9               Fiat X1-9
#> Porsche 914-2       Porsche 914-2
#> Lotus Europa         Lotus Europa
#> Ford Pantera L     Ford Pantera L
#> Ferrari Dino         Ferrari Dino
#> Maserati Bora       Maserati Bora
#> Volvo 142E             Volvo 142E

union_all(first, second)
#>                           mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> Mazda RX4                21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
#> Mazda RX4 Wag            21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
#> Datsun 710               22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
#> Hornet 4 Drive           21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
#> Hornet Sportabout        18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
#> Valiant                  18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
#> Duster 360               14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
#> Merc 240D                24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
#> Merc 230                 22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
#> Merc 280...10            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
#> Merc 280C...11           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
#> Merc 450SE...12          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
#> Merc 450SL...13          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
#> Merc 450SLC...14         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
#> Cadillac Fleetwood...15  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
#> Lincoln Continental...16 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
#> Chrysler Imperial...17   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
#> Fiat 128...18            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
#> Honda Civic...19         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
#> Toyota Corolla...20      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
#> Merc 280...21            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
#> Merc 280C...22           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
#> Merc 450SE...23          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
#> Merc 450SL...24          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
#> Merc 450SLC...25         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
#> Cadillac Fleetwood...26  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
#> Lincoln Continental...27 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
#> Chrysler Imperial...28   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
#> Fiat 128...29            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
#> Honda Civic...30         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
#> Toyota Corolla...31      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
#> Toyota Corona            21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
#> Dodge Challenger         15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
#> AMC Javelin              15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
#> Camaro Z28               13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
#> Pontiac Firebird         19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
#> Fiat X1-9                27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
#> Porsche 914-2            26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
#> Lotus Europa             30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
#> Ford Pantera L           15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
#> Ferrari Dino             19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
#> Maserati Bora            15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
#> Volvo 142E               21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
#>                                        model
#> Mazda RX4                          Mazda RX4
#> Mazda RX4 Wag                  Mazda RX4 Wag
#> Datsun 710                        Datsun 710
#> Hornet 4 Drive                Hornet 4 Drive
#> Hornet Sportabout          Hornet Sportabout
#> Valiant                              Valiant
#> Duster 360                        Duster 360
#> Merc 240D                          Merc 240D
#> Merc 230                            Merc 230
#> Merc 280...10                       Merc 280
#> Merc 280C...11                     Merc 280C
#> Merc 450SE...12                   Merc 450SE
#> Merc 450SL...13                   Merc 450SL
#> Merc 450SLC...14                 Merc 450SLC
#> Cadillac Fleetwood...15   Cadillac Fleetwood
#> Lincoln Continental...16 Lincoln Continental
#> Chrysler Imperial...17     Chrysler Imperial
#> Fiat 128...18                       Fiat 128
#> Honda Civic...19                 Honda Civic
#> Toyota Corolla...20           Toyota Corolla
#> Merc 280...21                       Merc 280
#> Merc 280C...22                     Merc 280C
#> Merc 450SE...23                   Merc 450SE
#> Merc 450SL...24                   Merc 450SL
#> Merc 450SLC...25                 Merc 450SLC
#> Cadillac Fleetwood...26   Cadillac Fleetwood
#> Lincoln Continental...27 Lincoln Continental
#> Chrysler Imperial...28     Chrysler Imperial
#> Fiat 128...29                       Fiat 128
#> Honda Civic...30                 Honda Civic
#> Toyota Corolla...31           Toyota Corolla
#> Toyota Corona                  Toyota Corona
#> Dodge Challenger            Dodge Challenger
#> AMC Javelin                      AMC Javelin
#> Camaro Z28                        Camaro Z28
#> Pontiac Firebird            Pontiac Firebird
#> Fiat X1-9                          Fiat X1-9
#> Porsche 914-2                  Porsche 914-2
#> Lotus Europa                    Lotus Europa
#> Ford Pantera L                Ford Pantera L
#> Ferrari Dino                    Ferrari Dino
#> Maserati Bora                  Maserati Bora
#> Volvo 142E                        Volvo 142E
setequal(mtcars, mtcars[32:1, ])
#> [1] TRUE

# Handling of duplicates:
a <- data.frame(column = c(1:10, 10))
b <- data.frame(column = c(1:5, 5))

# intersection is 1 to 5, duplicates removed (5)
intersect(a, b)
#>   column
#> 1      1
#> 2      2
#> 3      3
#> 4      4
#> 5      5

# union is 1 to 10, duplicates removed (5 and 10)
union(a, b)
#>    column
#> 1       1
#> 2       2
#> 3       3
#> 4       4
#> 5       5
#> 6       6
#> 7       7
#> 8       8
#> 9       9
#> 10     10

# set difference, duplicates removed (10)
setdiff(a, b)
#>   column
#> 1      6
#> 2      7
#> 3      8
#> 4      9
#> 5     10

# union all does not remove duplicates
union_all(a, b)
#>    column
#> 1       1
#> 2       2
#> 3       3
#> 4       4
#> 5       5
#> 6       6
#> 7       7
#> 8       8
#> 9       9
#> 10     10
#> 11     10
#> 12      1
#> 13      2
#> 14      3
#> 15      4
#> 16      5
#> 17      5