Cómo usar una variable para especificar el nombre de columna en ggplot

Tengo un comando ggplot

ggplot( rates.by.groups, aes(x=name, y=rate, colour=majr, group=majr) ) 

dentro de una función. Pero me gustaría poder usar un parámetro de la función para seleccionar la columna para usar como color y grupo. Es decir, me gustaría algo como esto

 f <- function( column ) { ... ggplot( rates.by.groups, aes(x=name, y=rate, colour= ??? , group=??? ) ) } 

De modo que la columna utilizada en ggplot está determinada por el parámetro. Por ejemplo, para f (“majr”) obtenemos el efecto de

 ggplot( rates.by.groups, aes(x=name, y=rate, colour=majr, group=majr) ) 

pero para f (“género”) obtenemos el efecto de

  ggplot( rates.by.groups, aes(x=name, y=rate, colour=gender, group=gender) ) 

Algunas cosas que intenté:

 ggplot( rates.by.groups, aes(x=name, y=rate, colour= columnName , group=columnName ) ) 

no funcionó. Ni hicimos

 e <- environment() ggplot( rates.by.groups, aes(x=name, y=rate, colour= columnName , group=columnName ), environment=e ) 

Puedes usar aes_string :

 f <- function( column ) { ... ggplot( rates.by.groups, aes_string(x="name", y="rate", colour= column, group=column ) ) } 

siempre que pase la columna a la función como una cadena ( f("majr") lugar de f(majr) ). También tenga en cuenta que cambiamos las otras columnas, "name" y "rate" , para que sean cadenas.

Si por aes_string motivo prefieres no usar aes_string , puedes cambiarlo a (algo más engorroso):

  ggplot( rates.by.groups, aes(x=name, y=rate, colour= get(column), group=get(column) ) ) 

Intenta usar aes_string lugar de aes .