do function

Do anything

Do anything

do() is superseded as of dplyr 1.0.0, because its syntax never really felt like it belonged with the rest of dplyr. It's replaced by a combination of reframe() (which can produce multiple rows and multiple columns), nest_by() (which creates a rowwise tibble of nested data), and pick() (which allows you to access the data for the "current" group).

do(.data, ...)

Arguments

  • .data: a tbl
  • ...: Expressions to apply to each group. If named, results will be stored in a new column. If unnamed, must return a data frame. You can use . to refer to the current group. You can not mix named and unnamed arguments.

Examples

# do() with unnamed arguments becomes reframe() or summarise() # . becomes pick() by_cyl <- mtcars %>% group_by(cyl) by_cyl %>% do(head(., 2)) # -> by_cyl %>% reframe(head(pick(everything()), 2)) by_cyl %>% slice_head(n = 2) # Can refer to variables directly by_cyl %>% do(mean = mean(.$vs)) # -> by_cyl %>% summarise(mean = mean(vs)) # do() with named arguments becomes nest_by() + mutate() & list() models <- by_cyl %>% do(mod = lm(mpg ~ disp, data = .)) # -> models <- mtcars %>% nest_by(cyl) %>% mutate(mod = list(lm(mpg ~ disp, data = data))) models %>% summarise(rsq = summary(mod)$r.squared) # use broom to turn models into data models %>% do(data.frame( var = names(coef(.$mod)), coef(summary(.$mod))) ) # -> models %>% reframe(broom::tidy(mod))
  • Maintainer: Hadley Wickham
  • License: MIT + file LICENSE
  • Last published: 2023-11-17