Como alimentar uma lista de nomes de colunas não citadas no `lapply` (para que eu possa usá-lo com a função` dplyr`)

Estou tentando escrever uma função notidyverse/dplyr que eu quero usar eventualmente comlapply (oumap) (Eu estava trabalhando nisso pararesponda a esta pergunta, mas encontrou um resultado / beco sem saída interessante. Não marque isso como duplicado - esta pergunta é uma extensão / partida das respostas que você vê lá.)

Existe
1) uma maneira de obter uma lista de variáveis citadas para trabalhar dentro de uma função dplyr
(e não use o uso obsoletoSE_ funções)ou existe
2) alguma maneira de alimentar uma lista de cadeias não citadas por meio de umlapply oumap

Eu usei oProgramming in Dplyr vinheta para construir o que acredito ser uma função mais alinhada com o padrão atual para trabalhar com o NSE.

Os dados de amostra:
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)
Uma função geradora de relatórios
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])
}

O que funciona bem para gerar um único relatório:

> 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

É quando tento configurar uma lista dos 4 relatórios a serem gerados que tudo se decompõe. (Embora seja certo que o código exigido nessa última linha da função - retornar uma string com a qual preencher a coluna - deve ser uma pista suficiente para que eu tenha me desviado na direção errada.)

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

O que resulta em:

> 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

Também tentei converter a lista de cadeias de caracteres em nomes antes de entregá-la paraapply emap:

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

De qualquer forma, a razão pela qual estou fazendo essa pergunta é que acho que escrevi a função para os padrões atualmente documentados, mas, finalmente, não vejo como utilizar um membro daapply ou mesmo dopurrr::map família com essa função. Com falta de reescrever a função a ser usadanames gostardo utilizador fez aquihttps://stackoverflow.com/a/47316151/5088194 existe uma maneira de obter essa função para trabalhar comapply oumap?

Espero ver isso 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

questionAnswers(3)

yourAnswerToTheQuestion