inst/doc/unpack_multiple_assignment.R

## -----------------------------------------------------------------------------
library(wrapr)
# example data
d <- data.frame(
  x = 1:9,
  group = c('train', 'calibrate', 'test'),
  stringsAsFactors = FALSE)

knitr::kable(d)

# split the d by group
(parts <- split(d, d$group))
train_data <- parts$train
calibrate_data <- parts$calibrate
test_data <- parts$test

knitr::kable(train_data)

knitr::kable(calibrate_data)

knitr::kable(test_data)

## -----------------------------------------------------------------------------
# clear out the earlier results
rm(list = c('train_data', 'calibrate_data', 'test_data', 'parts'))

# split d and unpack the smaller data frames into separate variables
unpack(split(d, d$group),
       train_data = train,
       test_data = test,
       calibrate_data = calibrate)

knitr::kable(train_data)

knitr::kable(calibrate_data)

knitr::kable(test_data)

## -----------------------------------------------------------------------------
# split d and unpack the smaller data frames into separate variables
unpack[traind = train, testd = test, cald = calibrate] := split(d, d$group)

knitr::kable(traind)

knitr::kable(cald)

knitr::kable(testd)

## -----------------------------------------------------------------------------
unpack(split(d, d$group), train, test, calibrate)

knitr::kable(train)

knitr::kable(calibrate)

knitr::kable(test)

# try the unpack[] assignment notation

rm(list = c('train', 'test', 'calibrate'))

unpack[test, train, calibrate] := split(d, d$group)

knitr::kable(train)

knitr::kable(calibrate)

knitr::kable(test)

## -----------------------------------------------------------------------------
rm(list = c('train', 'test', 'calibrate'))
unpack(split(d, d$group), train, holdout=test, calibrate)

knitr::kable(train)

knitr::kable(calibrate)

knitr::kable(holdout)

## ----error=TRUE---------------------------------------------------------------
rm(list = c('train', 'holdout', 'calibrate'))

unpack(split(d, d$group), train, test)

knitr::kable(train)

knitr::kable(test)

# we didn't unpack the calibrate set
calibrate


## ----error=TRUE---------------------------------------------------------------

# the split call will not return an element called "holdout"
unpack(split(d, d$group), training = train, testing = holdout)

# train was not unpacked either
training

Try the wrapr package in your browser

Any scripts or data that you put into this service are public.

wrapr documentation built on Aug. 20, 2023, 1:08 a.m.