在 dplyr summarise(across()) 中使用自定义函数

Use a custom function in dplyr summarise(across())

这按预期工作:

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

但是,当我尝试将它变成一个函数时。这不起作用。

p90 <- function(df, ..., minutes = minutes){
  
  p90.fn <- list(p90 = ~ .x / minutes * 90)
  
  df %>% 
    summarise(across(vars(...), p90.fn))
  
}

df %>% p90(var1,var2)

这里的所有答案都指向我在某处需要 {{}} 但我迷路了。谢谢!

只需将 vars 更改为 c

p90 <- function(df, ..., minutes = minutes){
  
   p90.fn <- list(p90 = ~ .x / minutes * 90)
  
   df %>% 
     summarise(across(c(...), p90.fn))
  
 }

-测试

library(dplyr)
df %>%
    p90(var1,var2)
 var1_p90 var2_p90
1       90  50.5618
2       90 100.0000
3       90 148.3516