Pase un nombre de columna data.frame a una función

Estoy tratando de escribir una función para aceptar un data.frame (x) y acolumn de eso. La función realiza algunos cálculos en x y luego devuelve otro data.frame. Estoy atascado en el método de mejores prácticas para pasar el nombre de la columna a la función.

Los dos ejemplos mínimosfun1 yfun2 a continuación producen el resultado deseado, pudiendo realizar operaciones enx$column, utilizandomax() como ejemplo. Sin embargo, ambos confían en lo aparentemente (al menos para mí) poco elegante

llamar asubstitute() y posiblementeeval()La necesidad de pasar el nombre de la columna como un vector de caracteres.

fun1 <- function(x, column){
  do.call("max", list(substitute(x[a], list(a = column))))
}

fun2 <- function(x, column){
  max(eval((substitute(x[a], list(a = column)))))
}

df <- data.frame(B = rnorm(10))
fun1(df, "B")
fun2(df, "B")

Me gustaría poder llamar a la función comofun(df, B), por ejemplo. Otras opciones que he considerado pero que no he probado:

Pasarcolumn como un entero del número de columna. Creo que esto evitaríasubstitute(). Idealmente, la función podría aceptar cualquiera.with(x, get(column)), pero, incluso si funciona, creo que esto aún requeriríasubstituteHacer uso deformula() ymatch.call(), ninguno de los cuales tengo mucha experiencia.

Sumisión: Esdo.call() preferido sobreeval()?

Respuestas a la pregunta(5)

Su respuesta a la pregunta