Use a custom function in dplyr summarise(across())
This works as intended:
library(dplyr)
df <- data.frame(minutes = c(89,90,91),
var1 = c(89, 90, 91),
var2 = c(50, 100, 150))
df %>%
summarise(across(c(var1, var2), list(p90 = ~ .x / minutes * 90)))
However, when I try to turn it into a function. This does not work.
p90 <- function(df, ..., minutes = minutes){
p90.fn <- list(p90 = ~ .x / minutes * 90)
df %>%
summarise(across(vars(...), p90.fn))
}
df %>% p90(var1,var2)
All the answers on here point me to needing a {{}} somewhere but I'm at a lost. Thanks!
Just change the vars
to c
p90 <- function(df, ..., minutes = minutes){
p90.fn <- list(p90 = ~ .x / minutes * 90)
df %>%
summarise(across(c(...), p90.fn))
}
-testing
library(dplyr)
df %>%
p90(var1,var2)
var1_p90 var2_p90
1 90 50.5618
2 90 100.0000
3 90 148.3516