workflows v0.2.1


Monthly downloads



Modeling Workflows

Managing both a 'parsnip' model and a preprocessor, such as a model formula or recipe from 'recipes', can often be challenging. The goal of 'workflows' is to streamline this process by bundling the model alongside the preprocessor, all within the same object.



Codecov test
coverage R build

What is a workflow?

A workflow is an object that can bundle together your pre-processing, modeling, and post-processing requests. For example, if you have a recipe and parsnip model, these can be combined into a workflow. The advantages are:

  • You don’t have to keep track of separate objects in your workspace.

  • The recipe prepping and model fitting can be executed using a single call to fit().

  • If you have custom tuning parameter settings, these can be defined using a simpler interface when combined with tune.

  • In the future, workflows will be able to add post-processing operations, such as modifying the probability cutoff for two-class models.


You can install workflows from CRAN with:


You can install the development version from GitHub with:

# install.packages("devtools")


Suppose you were modeling data on cars. Say…the fuel efficiency of 32 cars. You know that the relationship between engine displacement and miles-per-gallon is nonlinear, and you would like to model that as a spline before adding it to a Bayesian linear regression model. You might have a recipe to specify the spline:


spline_cars <- recipe(mpg ~ ., data = mtcars) %>% 
  step_ns(disp, deg_free = 10)

and a model object:

bayes_lm <- linear_reg() %>% 

To use these, you would generally run:

spline_cars_prepped <- prep(spline_cars, mtcars)
bayes_lm_fit <- fit(bayes_lm, mpg ~ ., data = juice(spline_cars_prepped))

You can’t predict on new samples using bayes_lm_fit without the prepped version of spline_cars around. You also might have other models and recipes in your workspace. This might lead to getting them mixed-up or forgetting to save the model/recipe pair that you are most interested in.

workflows makes this easier by combining these objects together:

car_wflow <- workflow() %>% 
  add_recipe(spline_cars) %>% 

Now you can prepare the recipe and estimate the model via a single call to fit():

car_wflow_fit <- fit(car_wflow, data = mtcars)

You can alter existing workflows using update_recipe() / update_model() and remove_recipe() / remove_model().


This project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

Functions in workflows

Name Description
add_formula Add formula terms to a workflow
workflow-extractors Extract elements of a workflow
add_recipe Add a recipe to a workflow
fit-workflow Fit a workflow object
predict-workflow Predict from a workflow
control_workflow Control object for a workflow
add_model Add a model to a workflow
add_variables Add variables to a workflow
workflow Create a workflow
tidy.workflow Tidy a workflow
workflows-internals Internal workflow functions
workflows-package workflows: Modeling Workflows
No Results!

Vignettes of workflows

No Results!

Last month downloads


License MIT + file LICENSE
VignetteBuilder knitr
Encoding UTF-8
LazyData true
RoxygenNote 7.1.1
NeedsCompilation no
Packaged 2020-10-08 19:44:57 UTC; davis
Repository CRAN
Date/Publication 2020-10-08 20:10:03 UTC

Include our badge in your README