Apply a function across a selection of columns. For use in arrange(), mutate(), and summarize().

across(.cols = everything(), .fns = NULL, ..., .names = NULL)

Arguments

.cols

vector c() of unquoted column names. tidyselect compatible.

.fns

Function to apply. Can be a purrr-style lambda. Can pass also list of functions.

...

Other arguments for the passed function

.names

A glue specification that helps with renaming output columns. {.col} stands for the selected column, and {.fn} stands for the name of the function being applied. The default (NULL) is equivalent to "{.col}" for a single function case and "{.col}_{.fn}" when a list is used for .fns.

Examples

df <- data.table(
  x = rep(1, 3),
  y = rep(2, 3),
  z = c("a", "a", "b")
)

df %>%
  mutate(across(c(x, y), ~ .x * 2))
#> # A tidytable: 3 × 3
#>       x     y z    
#>   <dbl> <dbl> <chr>
#> 1     2     4 a    
#> 2     2     4 a    
#> 3     2     4 b    

df %>%
  summarize(across(where(is.numeric), ~ mean(.x)),
            .by = z)
#> # A tidytable: 2 × 3
#>   z         x     y
#>   <chr> <dbl> <dbl>
#> 1 a         1     2
#> 2 b         1     2

df %>%
  arrange(across(c(y, z)))
#> # A tidytable: 3 × 3
#>       x     y z    
#>   <dbl> <dbl> <chr>
#> 1     1     2 a    
#> 2     1     2 a    
#> 3     1     2 b