Split a data frame into pieces based on variable contained in that data frame

splitter_d(data, .variables = NULL, drop = TRUE)

Arguments

data

data frame

.variables

a quoted list of variables

drop

drop unnused factor levels?

Value

a list of data.frames, with attributes that record split details

Details

This is the workhorse of the d*ply functions. Based on the variables you supply, it breaks up a single data frame into a list of data frames, each containing a single combination from the levels of the specified variables.

This is basically a thin wrapper around split which evaluates the variables in the context of the data, and includes enough information to reconstruct the labelling of the data frame after other operations.

See also

. for quoting variables, split

Other splitter functions: splitter_a()

Examples

plyr:::splitter_d(mtcars, .(cyl))
#> $`4`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> 1  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
#> 2  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
#> 3  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
#> 4  32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
#> 5  30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
#> 6  33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
#> 7  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
#> 8  27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
#> 9  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
#> 10 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
#> 11 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
#> 
#> $`6`
#>    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> 1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
#> 2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
#> 3 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
#> 4 18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
#> 5 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
#> 6 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
#> 7 19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
#> 
#> $`8`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> 1  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
#> 2  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
#> 3  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
#> 4  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
#> 5  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
#> 6  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
#> 7  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
#> 8  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
#> 9  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
#> 10 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
#> 11 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
#> 12 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
#> 13 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
#> 14 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
#> 
plyr:::splitter_d(mtcars, .(vs, am))
#> $`0.0`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> 1  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
#> 2  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
#> 3  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
#> 4  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
#> 5  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
#> 6  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
#> 7  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
#> 8  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
#> 9  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
#> 10 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
#> 11 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
#> 12 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
#> 
#> $`0.1`
#>    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> 1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
#> 2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
#> 3 26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
#> 4 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
#> 5 19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
#> 6 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
#> 
#> $`1.0`
#>    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> 1 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
#> 2 18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
#> 3 24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
#> 4 22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
#> 5 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
#> 6 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
#> 7 21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
#> 
#> $`1.1`
#>    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> 1 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
#> 2 32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
#> 3 30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
#> 4 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
#> 5 27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
#> 6 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
#> 7 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
#> 
plyr:::splitter_d(mtcars, .(am, vs))
#> $`0.0`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> 1  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
#> 2  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
#> 3  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
#> 4  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
#> 5  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
#> 6  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
#> 7  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
#> 8  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
#> 9  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
#> 10 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
#> 11 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
#> 12 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
#> 
#> $`0.1`
#>    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> 1 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
#> 2 18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
#> 3 24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
#> 4 22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
#> 5 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
#> 6 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
#> 7 21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
#> 
#> $`1.0`
#>    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> 1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
#> 2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
#> 3 26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
#> 4 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
#> 5 19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
#> 6 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
#> 
#> $`1.1`
#>    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
#> 1 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
#> 2 32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
#> 3 30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
#> 4 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
#> 5 27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
#> 6 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
#> 7 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
#> 

mtcars$cyl2 <- factor(mtcars$cyl, levels = c(2, 4, 6, 8, 10))
plyr:::splitter_d(mtcars, .(cyl2), drop = TRUE)
#> $`4`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2
#> 1  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    4
#> 2  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2    4
#> 3  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2    4
#> 4  32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1    4
#> 5  30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2    4
#> 6  33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1    4
#> 7  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1    4
#> 8  27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1    4
#> 9  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2    4
#> 10 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2    4
#> 11 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2    4
#> 
#> $`6`
#>    mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2
#> 1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4    6
#> 2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4    6
#> 3 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1    6
#> 4 18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1    6
#> 5 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4    6
#> 6 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4    6
#> 7 19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6    6
#> 
#> $`8`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2
#> 1  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2    8
#> 2  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4    8
#> 3  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3    8
#> 4  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3    8
#> 5  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3    8
#> 6  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4    8
#> 7  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4    8
#> 8  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4    8
#> 9  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2    8
#> 10 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2    8
#> 11 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4    8
#> 12 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2    8
#> 13 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4    8
#> 14 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8    8
#> 
plyr:::splitter_d(mtcars, .(cyl2), drop = FALSE)
#> $`2`
#>  [1] mpg  cyl  disp hp   drat wt   qsec vs   am   gear carb cyl2
#> <0 rows> (or 0-length row.names)
#> 
#> $`4`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2
#> 1  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    4
#> 2  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2    4
#> 3  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2    4
#> 4  32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1    4
#> 5  30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2    4
#> 6  33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1    4
#> 7  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1    4
#> 8  27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1    4
#> 9  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2    4
#> 10 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2    4
#> 11 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2    4
#> 
#> $`6`
#>    mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2
#> 1 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4    6
#> 2 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4    6
#> 3 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1    6
#> 4 18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1    6
#> 5 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4    6
#> 6 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4    6
#> 7 19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6    6
#> 
#> $`8`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2
#> 1  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2    8
#> 2  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4    8
#> 3  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3    8
#> 4  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3    8
#> 5  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3    8
#> 6  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4    8
#> 7  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4    8
#> 8  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4    8
#> 9  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2    8
#> 10 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2    8
#> 11 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4    8
#> 12 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2    8
#> 13 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4    8
#> 14 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8    8
#> 
#> $`10`
#>  [1] mpg  cyl  disp hp   drat wt   qsec vs   am   gear carb cyl2
#> <0 rows> (or 0-length row.names)
#> 

mtcars$cyl3 <- ifelse(mtcars$vs == 1, NA, mtcars$cyl)
plyr:::splitter_d(mtcars, .(cyl3))
#> $`4`
#>   mpg cyl  disp hp drat   wt qsec vs am gear carb cyl2 cyl3
#> 1  26   4 120.3 91 4.43 2.14 16.7  0  1    5    2    4    4
#> 
#> $`6`
#>    mpg cyl disp  hp drat    wt  qsec vs am gear carb cyl2 cyl3
#> 1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4    6    6
#> 2 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4    6    6
#> 3 19.7   6  145 175 3.62 2.770 15.50  0  1    5    6    6    6
#> 
#> $`8`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2 cyl3
#> 1  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2    8    8
#> 2  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4    8    8
#> 3  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3    8    8
#> 4  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3    8    8
#> 5  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3    8    8
#> 6  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4    8    8
#> 7  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4    8    8
#> 8  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4    8    8
#> 9  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2    8    8
#> 10 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2    8    8
#> 11 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4    8    8
#> 12 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2    8    8
#> 13 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4    8    8
#> 14 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8    8    8
#> 
#> $`NA`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2 cyl3
#> 1  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    4   NA
#> 2  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1    6   NA
#> 3  18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1    6   NA
#> 4  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2    4   NA
#> 5  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2    4   NA
#> 6  19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4    6   NA
#> 7  17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4    6   NA
#> 8  32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1    4   NA
#> 9  30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2    4   NA
#> 10 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1    4   NA
#> 11 21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1    4   NA
#> 12 27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1    4   NA
#> 13 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2    4   NA
#> 14 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2    4   NA
#> 
plyr:::splitter_d(mtcars, .(cyl3, vs))
#> $`4.0`
#>   mpg cyl  disp hp drat   wt qsec vs am gear carb cyl2 cyl3
#> 1  26   4 120.3 91 4.43 2.14 16.7  0  1    5    2    4    4
#> 
#> $`6.0`
#>    mpg cyl disp  hp drat    wt  qsec vs am gear carb cyl2 cyl3
#> 1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4    6    6
#> 2 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4    6    6
#> 3 19.7   6  145 175 3.62 2.770 15.50  0  1    5    6    6    6
#> 
#> $`8.0`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2 cyl3
#> 1  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2    8    8
#> 2  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4    8    8
#> 3  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3    8    8
#> 4  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3    8    8
#> 5  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3    8    8
#> 6  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4    8    8
#> 7  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4    8    8
#> 8  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4    8    8
#> 9  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2    8    8
#> 10 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2    8    8
#> 11 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4    8    8
#> 12 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2    8    8
#> 13 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4    8    8
#> 14 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8    8    8
#> 
#> $NA.1
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2 cyl3
#> 1  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    4   NA
#> 2  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1    6   NA
#> 3  18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1    6   NA
#> 4  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2    4   NA
#> 5  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2    4   NA
#> 6  19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4    6   NA
#> 7  17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4    6   NA
#> 8  32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1    4   NA
#> 9  30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2    4   NA
#> 10 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1    4   NA
#> 11 21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1    4   NA
#> 12 27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1    4   NA
#> 13 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2    4   NA
#> 14 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2    4   NA
#> 
plyr:::splitter_d(mtcars, .(cyl3, vs), drop = FALSE)
#> $`4.0`
#>   mpg cyl  disp hp drat   wt qsec vs am gear carb cyl2 cyl3
#> 1  26   4 120.3 91 4.43 2.14 16.7  0  1    5    2    4    4
#> 
#> $`4.1`
#>  [1] mpg  cyl  disp hp   drat wt   qsec vs   am   gear carb cyl2 cyl3
#> <0 rows> (or 0-length row.names)
#> 
#> $`6.0`
#>    mpg cyl disp  hp drat    wt  qsec vs am gear carb cyl2 cyl3
#> 1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4    6    6
#> 2 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4    6    6
#> 3 19.7   6  145 175 3.62 2.770 15.50  0  1    5    6    6    6
#> 
#> $`6.1`
#>  [1] mpg  cyl  disp hp   drat wt   qsec vs   am   gear carb cyl2 cyl3
#> <0 rows> (or 0-length row.names)
#> 
#> $`8.0`
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2 cyl3
#> 1  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2    8    8
#> 2  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4    8    8
#> 3  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3    8    8
#> 4  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3    8    8
#> 5  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3    8    8
#> 6  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4    8    8
#> 7  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4    8    8
#> 8  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4    8    8
#> 9  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2    8    8
#> 10 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2    8    8
#> 11 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4    8    8
#> 12 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2    8    8
#> 13 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4    8    8
#> 14 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8    8    8
#> 
#> $`8.1`
#>  [1] mpg  cyl  disp hp   drat wt   qsec vs   am   gear carb cyl2 cyl3
#> <0 rows> (or 0-length row.names)
#> 
#> $<NA>
#>  [1] mpg  cyl  disp hp   drat wt   qsec vs   am   gear carb cyl2 cyl3
#> <0 rows> (or 0-length row.names)
#> 
#> $<NA>
#>     mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2 cyl3
#> 1  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    4   NA
#> 2  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1    6   NA
#> 3  18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1    6   NA
#> 4  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2    4   NA
#> 5  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2    4   NA
#> 6  19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4    6   NA
#> 7  17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4    6   NA
#> 8  32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1    4   NA
#> 9  30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2    4   NA
#> 10 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1    4   NA
#> 11 21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1    4   NA
#> 12 27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1    4   NA
#> 13 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2    4   NA
#> 14 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2    4   NA
#>