Skip to content

No longer able to use case_when() in rename_all() #4459

@bschneidr

Description

@bschneidr

I'm trying to use case_when() in a function used with rename_all(). In the simple example below, I have a renaming function applied to the mtcars dataset which should return "fuel_efficiency" for column names equal to "mpg" and otherwise return the original column name.

    mtcars <- tibble::as_tibble(mtcars)
    rename_all(mtcars,
               function(x) case_when(x == 'mpg' ~ 'fuel_efficiency',
                                     TRUE ~ x))

With the latest dplyr release (0.8.2) this code no longer works and throws an error which I can't yet decipher.

> Error: must have class `character`, not class `dplyr_sel_vars/character`

Below are the reprexes of this code used with dplyr 0.8.1 and dplyr 0.8.2.

From the news file and recent Github issues, I can't see why this would have stopped working. What's going on here?

Using dplyr 0.8.1

# Using dplyr 0.8.1 ----

  ## Install version of package corresponding to version 0.8.1
    devtools::install_github('tidyverse/dplyr', ref = 'f01e5e9')
#> Skipping install of 'dplyr' from a github remote, the SHA1 (f01e5e91) has not changed since last install.
#>   Use `force = TRUE` to force installation

  ## Run example
    library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
    mtcars <- tibble::as_tibble(mtcars)
    rename_all(mtcars,
               function(x) case_when(x == 'mpg' ~ 'fuel_efficiency',
                                     TRUE ~ x))
#> # A tibble: 32 x 11
#>    fuel_efficiency   cyl  disp    hp  drat    wt  qsec    vs    am  gear
#>              <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1            21       6  160    110  3.9   2.62  16.5     0     1     4
#>  2            21       6  160    110  3.9   2.88  17.0     0     1     4
#>  3            22.8     4  108     93  3.85  2.32  18.6     1     1     4
#>  4            21.4     6  258    110  3.08  3.22  19.4     1     0     3
#>  5            18.7     8  360    175  3.15  3.44  17.0     0     0     3
#>  6            18.1     6  225    105  2.76  3.46  20.2     1     0     3
#>  7            14.3     8  360    245  3.21  3.57  15.8     0     0     3
#>  8            24.4     4  147.    62  3.69  3.19  20       1     0     4
#>  9            22.8     4  141.    95  3.92  3.15  22.9     1     0     4
#> 10            19.2     6  168.   123  3.92  3.44  18.3     1     0     4
#> # ... with 22 more rows, and 1 more variable: carb <dbl>

Created on 2019-07-02 by the reprex package (v0.3.0)

Session info
devtools::session_info()
#> - Session info ----------------------------------------------------------
#>  setting  value                       
#>  version  R version 3.6.0 (2019-04-26)
#>  os       Windows 10 x64              
#>  system   x86_64, mingw32             
#>  ui       RTerm                       
#>  language (EN)                        
#>  collate  English_United States.1252  
#>  ctype    English_United States.1252  
#>  tz       America/New_York            
#>  date     2019-07-02                  
#> 
#> - Packages --------------------------------------------------------------
#>  package     * version date       lib source                          
#>  assertthat    0.2.1   2019-03-21 [1] CRAN (R 3.6.0)                  
#>  backports     1.1.4   2019-04-10 [1] CRAN (R 3.6.0)                  
#>  callr         3.2.0   2019-03-15 [1] CRAN (R 3.6.0)                  
#>  cli           1.1.0   2019-03-19 [1] CRAN (R 3.6.0)                  
#>  crayon        1.3.4   2017-09-16 [1] CRAN (R 3.6.0)                  
#>  curl          3.3     2019-01-10 [1] CRAN (R 3.6.0)                  
#>  desc          1.2.0   2018-05-01 [1] CRAN (R 3.6.0)                  
#>  devtools      2.0.2   2019-04-08 [1] CRAN (R 3.6.0)                  
#>  digest        0.6.19  2019-05-20 [1] CRAN (R 3.6.0)                  
#>  dplyr       * 0.8.1   2019-07-02 [1] Github (tidyverse/dplyr@f01e5e9)
#>  evaluate      0.14    2019-05-28 [1] CRAN (R 3.6.0)                  
#>  fansi         0.4.0   2018-10-05 [1] CRAN (R 3.6.0)                  
#>  fs            1.3.1   2019-05-06 [1] CRAN (R 3.6.0)                  
#>  glue          1.3.1   2019-03-12 [1] CRAN (R 3.6.0)                  
#>  highr         0.8     2019-03-20 [1] CRAN (R 3.6.0)                  
#>  htmltools     0.3.6   2017-04-28 [1] CRAN (R 3.6.0)                  
#>  knitr         1.23    2019-05-18 [1] CRAN (R 3.6.0)                  
#>  magrittr      1.5     2014-11-22 [1] CRAN (R 3.6.0)                  
#>  memoise       1.1.0   2017-04-21 [1] CRAN (R 3.6.0)                  
#>  pillar        1.4.2   2019-06-29 [1] CRAN (R 3.6.0)                  
#>  pkgbuild      1.0.3   2019-03-20 [1] CRAN (R 3.6.0)                  
#>  pkgconfig     2.0.2   2018-08-16 [1] CRAN (R 3.6.0)                  
#>  pkgload       1.0.2   2018-10-29 [1] CRAN (R 3.6.0)                  
#>  prettyunits   1.0.2   2015-07-13 [1] CRAN (R 3.6.0)                  
#>  processx      3.3.1   2019-05-08 [1] CRAN (R 3.6.0)                  
#>  ps            1.3.0   2018-12-21 [1] CRAN (R 3.6.0)                  
#>  purrr         0.3.2   2019-03-15 [1] CRAN (R 3.6.0)                  
#>  R6            2.4.0   2019-02-14 [1] CRAN (R 3.6.0)                  
#>  Rcpp          1.0.1   2019-03-17 [1] CRAN (R 3.6.0)                  
#>  remotes       2.1.0   2019-06-24 [1] CRAN (R 3.6.0)                  
#>  rlang         0.4.0   2019-06-25 [1] CRAN (R 3.6.0)                  
#>  rmarkdown     1.13    2019-05-22 [1] CRAN (R 3.6.0)                  
#>  rprojroot     1.3-2   2018-01-03 [1] CRAN (R 3.6.0)                  
#>  sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 3.6.0)                  
#>  stringi       1.4.3   2019-03-12 [1] CRAN (R 3.6.0)                  
#>  stringr       1.4.0   2019-02-10 [1] CRAN (R 3.6.0)                  
#>  testthat      2.1.1   2019-04-23 [1] CRAN (R 3.6.0)                  
#>  tibble        2.1.3   2019-06-06 [1] CRAN (R 3.6.0)                  
#>  tidyselect    0.2.5   2018-10-11 [1] CRAN (R 3.6.0)                  
#>  usethis       1.5.0   2019-04-07 [1] CRAN (R 3.6.0)                  
#>  utf8          1.1.4   2018-05-24 [1] CRAN (R 3.6.0)                  
#>  vctrs         0.1.0   2018-11-29 [1] CRAN (R 3.6.0)                  
#>  withr         2.1.2   2018-03-15 [1] CRAN (R 3.6.0)                  
#>  xfun          0.8     2019-06-25 [1] CRAN (R 3.6.0)                  
#>  yaml          2.2.0   2018-07-25 [1] CRAN (R 3.6.0)                  
#>  zeallot       0.1.0   2018-01-28 [1] CRAN (R 3.6.0)                  
#> 
#> [1] C:/Users/Ben Schneider/Documents/R/win-library/3.6
#> [2] C:/Program Files/R/R-3.6.0/library

Using dplyr 0.8.2

# Using dplyr 0.8.2 ----
    
  ## Install current CRAN version 0.8.2
    install.packages('dplyr')
#> Installing package into 'C:/Users/Ben Schneider/Documents/R/win-library/3.6'
#> (as 'lib' is unspecified)
#> package 'dplyr' successfully unpacked and MD5 sums checked
#> 
#> The downloaded binary packages are in
#>  C:\Users\Ben Schneider\AppData\Local\Temp\Rtmp2VU53r\downloaded_packages
    
  ## Run example
    library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
    mtcars <- tibble::as_tibble(mtcars)
    rename_all(mtcars,
               function(x) case_when(x == 'mpg' ~ 'fuel_efficiency',
                                     TRUE ~ x))
#> must have class `character`, not class `dplyr_sel_vars/character`

Created on 2019-07-02 by the reprex package (v0.3.0)

Session info
devtools::session_info()
#> - Session info ----------------------------------------------------------
#>  setting  value                       
#>  version  R version 3.6.0 (2019-04-26)
#>  os       Windows 10 x64              
#>  system   x86_64, mingw32             
#>  ui       RTerm                       
#>  language (EN)                        
#>  collate  English_United States.1252  
#>  ctype    English_United States.1252  
#>  tz       America/New_York            
#>  date     2019-07-02                  
#> 
#> - Packages --------------------------------------------------------------
#>  package     * version date       lib source        
#>  assertthat    0.2.1   2019-03-21 [1] CRAN (R 3.6.0)
#>  backports     1.1.4   2019-04-10 [1] CRAN (R 3.6.0)
#>  callr         3.2.0   2019-03-15 [1] CRAN (R 3.6.0)
#>  cli           1.1.0   2019-03-19 [1] CRAN (R 3.6.0)
#>  crayon        1.3.4   2017-09-16 [1] CRAN (R 3.6.0)
#>  desc          1.2.0   2018-05-01 [1] CRAN (R 3.6.0)
#>  devtools      2.0.2   2019-04-08 [1] CRAN (R 3.6.0)
#>  digest        0.6.19  2019-05-20 [1] CRAN (R 3.6.0)
#>  dplyr       * 0.8.2   2019-06-29 [1] CRAN (R 3.6.0)
#>  evaluate      0.14    2019-05-28 [1] CRAN (R 3.6.0)
#>  fs            1.3.1   2019-05-06 [1] CRAN (R 3.6.0)
#>  glue          1.3.1   2019-03-12 [1] CRAN (R 3.6.0)
#>  highr         0.8     2019-03-20 [1] CRAN (R 3.6.0)
#>  htmltools     0.3.6   2017-04-28 [1] CRAN (R 3.6.0)
#>  knitr         1.23    2019-05-18 [1] CRAN (R 3.6.0)
#>  magrittr      1.5     2014-11-22 [1] CRAN (R 3.6.0)
#>  memoise       1.1.0   2017-04-21 [1] CRAN (R 3.6.0)
#>  pillar        1.4.2   2019-06-29 [1] CRAN (R 3.6.0)
#>  pkgbuild      1.0.3   2019-03-20 [1] CRAN (R 3.6.0)
#>  pkgconfig     2.0.2   2018-08-16 [1] CRAN (R 3.6.0)
#>  pkgload       1.0.2   2018-10-29 [1] CRAN (R 3.6.0)
#>  prettyunits   1.0.2   2015-07-13 [1] CRAN (R 3.6.0)
#>  processx      3.3.1   2019-05-08 [1] CRAN (R 3.6.0)
#>  ps            1.3.0   2018-12-21 [1] CRAN (R 3.6.0)
#>  purrr         0.3.2   2019-03-15 [1] CRAN (R 3.6.0)
#>  R6            2.4.0   2019-02-14 [1] CRAN (R 3.6.0)
#>  Rcpp          1.0.1   2019-03-17 [1] CRAN (R 3.6.0)
#>  remotes       2.1.0   2019-06-24 [1] CRAN (R 3.6.0)
#>  rlang         0.4.0   2019-06-25 [1] CRAN (R 3.6.0)
#>  rmarkdown     1.13    2019-05-22 [1] CRAN (R 3.6.0)
#>  rprojroot     1.3-2   2018-01-03 [1] CRAN (R 3.6.0)
#>  sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 3.6.0)
#>  stringi       1.4.3   2019-03-12 [1] CRAN (R 3.6.0)
#>  stringr       1.4.0   2019-02-10 [1] CRAN (R 3.6.0)
#>  testthat      2.1.1   2019-04-23 [1] CRAN (R 3.6.0)
#>  tibble        2.1.3   2019-06-06 [1] CRAN (R 3.6.0)
#>  tidyselect    0.2.5   2018-10-11 [1] CRAN (R 3.6.0)
#>  usethis       1.5.0   2019-04-07 [1] CRAN (R 3.6.0)
#>  withr         2.1.2   2018-03-15 [1] CRAN (R 3.6.0)
#>  xfun          0.8     2019-06-25 [1] CRAN (R 3.6.0)
#>  yaml          2.2.0   2018-07-25 [1] CRAN (R 3.6.0)
#> 
#> [1] C:/Users/Ben Schneider/Documents/R/win-library/3.6
#> [2] C:/Program Files/R/R-3.6.0/library

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions