Construct a list of data.frames based upon an input data.frame and a list of one or more at values

build_datalist(data, at = NULL, as.data.frame = FALSE, ...)

Arguments

data

A data.frame containing the original data.

at

A list of one or more named vectors of values, which will be used to specify values of variables in data. All possible combinations are generated. Alternatively, this can be a data frame of combination levels if only a subset of combinations are desired. See examples.

as.data.frame

A logical indicating whether to return a single stacked data frame rather than a list of data frames

Ignored.

Value

A list of data.frames, unless as.data.frame = TRUE in which case a single, stacked data frame is returned.

See also

Examples

# basic examples require("datasets") build_datalist(head(mtcars), at = list(cyl = c(4, 6)))
#> $`4` #> mpg cyl disp hp drat wt qsec vs am gear carb #> Mazda RX4 21.0 4 160 110 3.90 2.620 16.46 0 1 4 4 #> Mazda RX4 Wag 21.0 4 160 110 3.90 2.875 17.02 0 1 4 4 #> Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 #> Hornet 4 Drive 21.4 4 258 110 3.08 3.215 19.44 1 0 3 1 #> Hornet Sportabout 18.7 4 360 175 3.15 3.440 17.02 0 0 3 2 #> Valiant 18.1 4 225 105 2.76 3.460 20.22 1 0 3 1 #> #> $`6` #> mpg cyl disp hp drat wt qsec vs am gear carb #> Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 #> Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 #> Datsun 710 22.8 6 108 93 3.85 2.320 18.61 1 1 4 1 #> Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 #> Hornet Sportabout 18.7 6 360 175 3.15 3.440 17.02 0 0 3 2 #> Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 #> #> attr(,"at_specification") #> index cyl #> 1 1 4 #> 2 2 6
str(build_datalist(head(mtcars), at = list(cyl = c(4,6), wt = c(2.75,3,3.25))), 1)
#> List of 6 #> $ 4.2.75:'data.frame': 6 obs. of 11 variables: #> ..- attr(*, "at")=List of 2 #> $ 6.2.75:'data.frame': 6 obs. of 11 variables: #> ..- attr(*, "at")=List of 2 #> $ 4.3 :'data.frame': 6 obs. of 11 variables: #> ..- attr(*, "at")=List of 2 #> $ 6.3 :'data.frame': 6 obs. of 11 variables: #> ..- attr(*, "at")=List of 2 #> $ 4.3.25:'data.frame': 6 obs. of 11 variables: #> ..- attr(*, "at")=List of 2 #> $ 6.3.25:'data.frame': 6 obs. of 11 variables: #> ..- attr(*, "at")=List of 2 #> - attr(*, "at_specification")='data.frame': 6 obs. of 3 variables:
str(build_datalist(head(mtcars), at = data.frame(cyl = c(4,4), wt = c(2.75,3))))
#> List of 2 #> $ 4.2.75:'data.frame': 6 obs. of 11 variables: #> ..$ mpg : num [1:6] 21 21 22.8 21.4 18.7 18.1 #> ..$ cyl : num [1:6] 4 4 4 4 4 4 #> ..$ disp: num [1:6] 160 160 108 258 360 225 #> ..$ hp : num [1:6] 110 110 93 110 175 105 #> ..$ drat: num [1:6] 3.9 3.9 3.85 3.08 3.15 2.76 #> ..$ wt : num [1:6] 2.75 2.75 2.75 2.75 2.75 2.75 #> ..$ qsec: num [1:6] 16.5 17 18.6 19.4 17 ... #> ..$ vs : num [1:6] 0 0 1 1 0 1 #> ..$ am : num [1:6] 1 1 1 0 0 0 #> ..$ gear: num [1:6] 4 4 4 3 3 3 #> ..$ carb: num [1:6] 4 4 1 1 2 1 #> ..- attr(*, "at")=List of 2 #> .. ..$ cyl: num 4 #> .. ..$ wt : num 2.75 #> $ 4.3 :'data.frame': 6 obs. of 11 variables: #> ..$ mpg : num [1:6] 21 21 22.8 21.4 18.7 18.1 #> ..$ cyl : num [1:6] 4 4 4 4 4 4 #> ..$ disp: num [1:6] 160 160 108 258 360 225 #> ..$ hp : num [1:6] 110 110 93 110 175 105 #> ..$ drat: num [1:6] 3.9 3.9 3.85 3.08 3.15 2.76 #> ..$ wt : num [1:6] 3 3 3 3 3 3 #> ..$ qsec: num [1:6] 16.5 17 18.6 19.4 17 ... #> ..$ vs : num [1:6] 0 0 1 1 0 1 #> ..$ am : num [1:6] 1 1 1 0 0 0 #> ..$ gear: num [1:6] 4 4 4 3 3 3 #> ..$ carb: num [1:6] 4 4 1 1 2 1 #> ..- attr(*, "at")=List of 2 #> .. ..$ cyl: num 4 #> .. ..$ wt : num 3 #> - attr(*, "at_specification")='data.frame': 2 obs. of 3 variables: #> ..$ index: int [1:2] 1 2 #> ..$ cyl : num [1:2] 4 4 #> ..$ wt : num [1:2] 2.75 3