dplyr 0.7 equivalent for deprecated mutate_
To expand a little bit on MrFlick's example, let's assume you have a number of instructions stored as strings, as well as the corresponding names that you want to assign to the resulting computations:
ln <- list( "test2", "test3" )
lf <- list( "substr(test, 1, 5)", "substr(test, 5, 5)" )
Match up names to their instructions and convert everything to quosures:
ll <- setNames( lf, ln ) %>% lapply( rlang::parse_quosure )
As per aosmith's suggestion, the entire list can now be passed to mutate, using the special !!!
operator:
tibble( test = "test@test" ) %>% mutate( !!! ll )
# # A tibble: 1 x 3
# test test2 test3
# <chr> <chr> <chr>
# 1 test@test test@ @
Here's one alternative
a <- "test2"
b <- "test3"
dplyr::tibble(test = "test@test") %>%
dplyr::mutate(a := !!rlang::parse_expr("substr(test, 1, 5)"),
b := !!rlang::parse_expr("substr(test, 5, 5)"))
# # A tibble: 1 x 3
# test a b
# <chr> <chr> <chr>
# 1 test@test test@ @
We use the :=
operator to dynamically name parameters with strings, and we parse the expression string for the transformation and unwrap it with !!