在dplyr :: summarize_at中使用tidyeval时,获取“参数“ e2”缺失且没有默认值”错误

时间:2019-03-12 15:29:08

标签: r dplyr rlang

我正在尝试捕获一系列变量中的summarize_at操作。这是一个愚蠢的例子:

library(dplyr)
library(stringr)

starwars %>%
  summarise_at(c("hair_color", "skin_color"), 
               ~ sum(if_else(str_detect(., "brown"), 1, birth_year), na.rm = TRUE))

# A tibble: 1 x 2
  hair_color skin_color
       <dbl>      <dbl>
1      2399.      3123.

假设我想将其捕获到一个函数中,在其中我可以将birth_year更改为其他内容。

myfun <- function(df, var) {
  df %>% 
    summarize_at(c("hair_color", "skin_color"), 
                 ~ sum(if_else(str_detect(., "brown"), 1, !! enquo(var)), na.rm = TRUE))
}

myfun(starwars, birth_year)

Error in is_quosure(e2) : argument "e2" is missing, with no default 

我想念什么?我正在使用在R v3.5.3上运行的dplyr v0.8.0.1,stringr v1.4和rlang v0.3.1

0 个答案:

没有答案