R 如何在函数中引用和取消引用变量,并在数据帧上迭代

R 如何在函数中引用和取消引用变量,并在数据帧上迭代,r,dplyr,purrr,rlang,R,Dplyr,Purrr,Rlang,我试图获取一个函数并在值的数据帧上迭代。这里的目标是按10人一组总结机场延误情况 如何将传递到函数中的内容的值作为名称?列原点(EWR、LGA、JFK)应另存为列,并且仍需要将其传递到group by函数中 图书馆(tidyverse) 图书馆(nycflights13) 主管(航班) #>#tibble:6 x 19 #>年-月-日折旧时间计划折旧时间延迟到货时间计划到货时间 #> #> 1 2013 1

我试图获取一个函数并在值的数据帧上迭代。这里的目标是按10人一组总结机场延误情况

如何将传递到函数中的内容的值作为名称?列原点(EWR、LGA、JFK)应另存为列,并且仍需要将其传递到group by函数中


图书馆(tidyverse)
图书馆(nycflights13)
主管(航班)
#>#tibble:6 x 19
#>年-月-日折旧时间计划折旧时间延迟到货时间计划到货时间
#>                                      
#> 1  2013     1     1      517            515         2      830            819
#> 2  2013     1     1      533            529         4      850            830
#> 3  2013     1     1      542            540         2      923            850
#> 4  2013     1     1      544            545        -1     1004           1022
#> 5  2013     1     1      554            600        -6      812            837
#> 6  2013     1     1      554            558        -4      740            728
#> # ... 还有11个变量:到达延迟、承运人、航班、,
#>#尾数、起点、终点、空中时间、距离、,
#>#小时,分钟,时间#小时
全部汇总%select(原点),
航班%>%计数(天)%%>%机头(2)%%>%选择(天)
)
总摘要(航班、天数、到达延误)
#>分组依据(pcts,col\u nm)中出错:未找到对象“pcts”
purrr::walk(参数,~ntile_摘要(航班,!始发地,到达延迟))
#>错误!来源:参数类型无效

由(v0.3.0)于2020-03-15创建在
变异后,连接为。没有
%%>%%

ntile_summary <- function(data, by, var) {
 by <- enquo(by)
 var <- enquo(var)
 data %>%
    mutate(pcts = ntile(!!by, n = 10),
       col_nm = !!by) %>%
    group_by(pcts, col_nm) %>% 
    summarize(avg = mean(!!var, na.ram  = TRUE))
}
ntile_summary(flights, day, arr_delay)
# A tibble: 40 x 3
# Groups:   pcts [10]
#    pcts col_nm   avg
#   <int>  <int> <dbl>
# 1     1      1 NA   
# 2     1      2 NA   
# 3     1      3 NA   
# 4     1      4 -4.44
# 5     2      4 NA   
# 6     2      5 NA   
# 7     2      6 NA   
# 8     2      7 NA   
# 9     3      7 NA   
#10     3      8 NA   
# … with 30 more rows

我意识到我的例子没有被清晰地考虑出来。我需要修改它,使其适用于我的真实数据集。
ntile_summary <- function(data, by, var) {

     data %>%          
        mutate(col_nm = {{by}}, pcts = ntile({{by}}, n = 10)) %>% 
        group_by(pcts, col_nm) %>%
        summarize(avg = mean({{var}}, na.ram  = TRUE))
    }

ntile_summary(flights, day, arr_delay)
# A tibble: 40 x 3
# Groups:   pcts [10]
#    pcts col_nm   avg
#   <int>  <int> <dbl>
# 1     1      1 NA   
# 2     1      2 NA   
# 3     1      3 NA   
# 4     1      4 -4.44
# 5     2      4 NA   
# 6     2      5 NA   
# 7     2      6 NA   
# 8     2      7 NA   
# 9     3      7 NA   
#10     3      8 NA   
# … with 30 more rows