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.

intersect(x, y, ...)

union(x, y, ...)

union_all(x, y, ...)

setdiff(x, y, ...)

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