Cómo alimentar una lista de nombres de columnas sin comillas en `lapply` (para que pueda usarla con una función` dplyr`)

Estoy tratando de escribir una función entidyverse/dplyr que quiero usar eventualmente conlapply (omap) (Había estado trabajando en ello paraResponde esta pregunta, pero se encontró con un resultado interesante / callejón sin salida. No marque esto como un duplicado: esta pregunta es una extensión / desviación de las respuestas que ve allí).

Esta ahí
1) una forma de obtener una lista de variables citadas para trabajar dentro de una función dplyr
(y no usar el obsoletoSE_ funciones)o hay
2) alguna forma de alimentar una lista de cadenas sin comillas a través de unlapply omap

He usado elProgramming in Dplyr viñeta para construir lo que creo que es una función más acorde con el estándar actual para trabajar con la NSE.

Los datos de muestra:
sample_data <- 
    read.table(text = "REVENUEID AMOUNT  YEAR REPORT_CODE PAYMENT_METHOD INBOUND_CHANNEL  AMOUNT_CAT
               1 rev-24985629     30  FY18           S          Check            Mail     25,50
               2 rev-22812413      1  FY16           Q          Other      Canvassing   0.01,10
               3 rev-23508794    100  FY17           Q    Credit_card             Web   100,250
               4 rev-23506121    300  FY17           S    Credit_card            Mail   250,500
               5 rev-23550444    100  FY17           S    Credit_card             Web   100,250
               6 rev-21508672     25  FY14           J          Check            Mail     25,50
               7 rev-24981769    500  FY18           S    Credit_card             Web 500,1e+03
               8 rev-23503684     50  FY17           R          Check            Mail     50,75
               9 rev-24982087     25  FY18           R          Check            Mail     25,50
               10 rev-24979834     50  FY18           R    Credit_card             Web    50,75
                      ", header = TRUE, stringsAsFactors = FALSE)
Una función generadora de informes.
report <- function(report_cat){
    report_cat <- enquo(report_cat)
    sample_data %>%
    group_by(!!report_cat, YEAR) %>%
    summarize(num=n(),total=sum(AMOUNT)) %>% 
    rename(REPORT_VALUE = !!report_cat) %>% 
    mutate(REPORT_CATEGORY := as.character(quote(!!report_cat))[2])
}

Lo que funciona bien para generar un solo informe:

> report(REPORT_CODE)
# A tibble: 7 x 5
# Groups:   REPORT_VALUE [4]
  REPORT_VALUE  YEAR   num total REPORT_CATEGORY
         <chr> <chr> <int> <int>           <chr>
1            J  FY14     1    25     REPORT_CODE
2            Q  FY16     1     1     REPORT_CODE
3            Q  FY17     1   100     REPORT_CODE
4            R  FY17     1    50     REPORT_CODE
5            R  FY18     2    75     REPORT_CODE
6            S  FY17     2   400     REPORT_CODE
7            S  FY18     2   530     REPORT_CODE

Es cuando trato de configurar una lista de los 4 informes para generar, que todo se descompone. (Aunque es cierto que el código requerido en esa última línea de la función, para devolver una cadena con la que luego se debe llenar la columna, debería ser una pista suficiente que me haya desviado en la dirección incorrecta).

#the other reports
cat.list <- c("REPORT_CODE","PAYMENT_METHOD","INBOUND_CHANNEL","AMOUNT_CAT")

# Applying and Mapping attempts 
lapply(cat.list, report)
map_df(cat.list, report)

Lo que resulta en:

> lapply(cat.list, report)  
 Error in (function (x, strict = TRUE)  : 
  the argument has already been evaluated  

> map_df(cat.list, report)
 Error in (function (x, strict = TRUE)  : 
  the argument has already been evaluated

También he tratado de convertir la lista de cadenas en nombres antes de pasarla aapply ymap:

library(rlang)
cat.names <- lapply(cat.list, sym)
lapply(cat.names, report)
map_df(cat.names, report)
> lapply(cat.names, report)
 Error in (function (x, strict = TRUE)  : 
  the argument has already been evaluated 
> map_df(cat.names, report)
 Error in (function (x, strict = TRUE)  : 
  the argument has already been evaluated

En cualquier caso, la razón por la que hago esta pregunta es porque creo que he escrito la función a los estándares actualmente documentados, pero finalmente no puedo ver ninguna manera de utilizar un miembro delapply o incluso de lapurrr::map familia con tal función. Corto de reescribir la función a usarnames me gustausuario ha hecho aquíhttps://stackoverflow.com/a/47316151/5088194 ¿Hay alguna manera de hacer que esta función funcione?apply omap?

Espero ver esto como resultado:

# A tibble: 27 x 5
# Groups:   REPORT_VALUE [16]
   REPORT_VALUE  YEAR   num total REPORT_CATEGORY
          <chr> <chr> <int> <int>           <chr>
 1            J  FY14     1    25     REPORT_CODE
 2            Q  FY16     1     1     REPORT_CODE
 3            Q  FY17     1   100     REPORT_CODE
 4            R  FY17     1    50     REPORT_CODE
 5            R  FY18     2    75     REPORT_CODE
 6            S  FY17     2   400     REPORT_CODE
 7            S  FY18     2   530     REPORT_CODE
 8        Check  FY14     1    25  PAYMENT_METHOD
 9        Check  FY17     1    50  PAYMENT_METHOD
10        Check  FY18     2    55  PAYMENT_METHOD
# ... with 17 more rows

Respuestas a la pregunta(3)

Su respuesta a la pregunta