dplyr 0.7 equivalent for deprecated mutate_

前端 未结 2 826
暗喜
暗喜 2020-12-17 22:47

I cannot find in dplyr 0.7 a way to replace the mutate_ function which is going to be deprecated.

The mutate_ function is useful in my

相关标签:
2条回答
  • 2020-12-17 23:24

    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 !!

    0 讨论(0)
  • 2020-12-17 23:27

    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@     @
    
    0 讨论(0)
提交回复
热议问题