R dplyr opera en una columna conocida solo por su nombre de cadena

Estoy luchando con la programación usandodplyr en R para operar en columnas de un marco de datos que solo se conocen por sus nombres de cadena. Sé que recientemente hubo una actualización dedplyr para respaldar las cotizaciones y similares, y he revisado lo que creo que son los componentes relevantes del nuevo artículo "Programación con dplyr" aquí:http://dplyr.tidyverse.org/articles/programming.html. Sin embargo, todavía no puedo hacer lo que quiero.

Mi situación es que conozco el nombre de una columna de un marco de datos solo por su nombre de cadena. Por lo tanto, no puedo usar una evaluación no estándar en una llamada adplyr dentro de una función o incluso un script donde el nombre de la columna puede cambiar entre ejecuciones porque generalmente no puedo codificar el nombre de columna sin comillas (es decir, "desnudo"). Me pregunto cómo solucionar esto, y supongo que estoy pasando por alto algo con la nueva sintaxis de comillas.

Por ejemplo, supongamos que tengo entradas de usuario que definen percentiles de corte para una distribución de datos. Un usuario puede ejecutar el código utilizando cualquier percentil que desee, y el percentil que elija cambiará la salida. Dentro del análisis, se crea una columna en un marco de datos intermedio con el nombre del percentil que se utiliza; por lo tanto, el nombre de esta columna cambia según la entrada de percentil de corte del usuario.

A continuación se muestra un ejemplo mínimo para ilustrar. Quiero llamar a la función con varios valores para el percentil de corte. Quiero el marco de datos llamadoMPGCutoffs tener una columna que se nombra de acuerdo con el cuartil de corte elegido (esto actualmente funciona en el código a continuación), y luego quiero operar con el nombre de esta columna. Debido a la generalidad del nombre de esta columna, solo puedo saberlo en términos de la entradapctCutoff al momento de escribir la función, por lo que necesito una forma de operar en ella cuando solo conozco la cadena definida porprobColName, que sigue un patrón predefinido basado en el 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 )

losdplyr::filter() declaración es lo que no puedo ejecutar correctamente. He intentado:

dplyr::filter( mpg > probColName ) - No hay error, pero no se devuelven filas.

dplyr::filter( mpg > !!probColName ) - No hay error, pero no se devuelven filas.

También he visto ejemplos en los que podría pasar algo comoquo(P95) a la función y luego, entre comillas, en la llamada adplyr::filter(); He conseguido que esto funcione, pero no resuelve mi problema, ya que requiere codificar el nombre de la variable fuera de la función. Por ejemplo, si hago esto y el percentil pasado por el usuario es 0.90, entonces la llamada adplyr::filter() falla porque la columna creada se llamaP90 y noP95.

Cualquier ayuda sería muy apreciada. Espero que haya una solución fácil que solo estoy pasando por alto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta