R dplyr opera em uma coluna conhecida apenas por seu nome de sequência

Estou lutando com programação usandodplyr em R para operar em colunas de um quadro de dados que são conhecidas apenas por seus nomes de sequência. Eu sei que houve recentemente uma atualização paradplyr para dar suporte a quosures e similares e revi o que acho que são os componentes relevantes do novo artigo "Programação com dplyr" aqui:http://dplyr.tidyverse.org/articles/programming.html. No entanto, ainda não sou capaz de fazer o que quero.

Minha situação é que eu conheço o nome de uma coluna de um quadro de dados apenas pelo nome da string. Portanto, não posso usar a avaliação não-padrão em uma chamada paradplyr dentro de uma função ou mesmo de um script em que o nome da coluna pode ser alterado entre as execuções, porque geralmente não é possível codificar o nome da coluna não citada (ou seja, "nua"). Estou pensando em como contornar isso e acho que estou ignorando algo com a nova sintaxe de citação / não citação.

Por exemplo, suponha que eu tenha entradas de usuário que definam percentis de corte para uma distribuição de dados. Um usuário pode executar o código usando qualquer percentil que desejar, e o percentil escolhido escolherá a saída. Na análise, uma coluna em um quadro de dados intermediário é criada com o nome do percentil usado; portanto, o nome desta coluna muda dependendo do percentil de corte inserido pelo usuário.

Abaixo está um exemplo mínimo para ilustrar. Quero chamar a função com vários valores para o percentil de corte. Eu quero o quadro de dados chamadoMPGCutoffs para ter uma coluna nomeada de acordo com o quantil de corte escolhido (atualmente funciona no código abaixo), e eu quero operar posteriormente com esse nome de coluna. Devido à generalidade do nome desta coluna, só posso conhecê-lo em termos da entradapctCutoff no momento em que escrevi a função, então preciso de uma maneira de operá-la quando conhecer apenas a sequência definida porprobColName, que segue um padrão predefinido com base no valor depctCutoff.

userInput_prob1 <- 0.95
userInput_prob2 <- 0.9

# Function to get cars that have the "best" MPG
# fuel economy, where "best" is defined by the
# percentile cutoff passed to the function.
getBestMPG <- function( pctCutoff ){

  # Define new column name to hold the MPG percentile cutoff.
  probColName <- paste0('P', pctCutoff*100)

  # Compute the MPG percentile cutoff by number of gears.
  MPGCutoffs <- mtcars %>%
    dplyr::group_by( gear ) %>%
    dplyr::summarize( !!probColName := quantile(mpg, pctCutoff) )

  # Filter mtcars with only MPG values above cutoffs.
  output <- mtcars %>%
    dplyr::left_join( MPGCutoffs, by='gear' ) %>%
    dplyr::filter( mpg > !!probColName ) #****This doesn't run; this is where I'm stuck

  # Return filtered data.
  return(output)
}

best_1 <- getBestMPG( userInput_prob1 )
best_2 <- getBestMPG( userInput_prob2 )

odplyr::filter() declaração é o que não consigo executar corretamente. Eu tentei:

dplyr::filter( mpg > probColName ) - Sem erro, mas nenhuma linha retornada.

dplyr::filter( mpg > !!probColName ) - Sem erro, mas nenhuma linha retornada.

Eu também vi exemplos em que eu poderia passar algo comoquo(P95) para a função e, em seguida, coloque-o entre aspas na chamada paradplyr::filter(); Eu consegui que isso funcionasse, mas isso não resolve o meu problema, pois requer a codificação do nome da variável fora da função. Por exemplo, se eu fizer isso e o percentil passado pelo usuário for 0,90, a chamada paradplyr::filter() falha porque a coluna criada é nomeadaP90 e nãoP95.

Qualquer ajuda seria muito apreciada. Espero que exista uma solução fácil que estou apenas ignorando.

questionAnswers(2)

yourAnswerToTheQuestion