Come utilizzare una variabile per specificare il nome della colonna in ggplot

Ho un comando ggplot

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

all’interno di una funzione. Ma mi piacerebbe essere in grado di utilizzare un parametro della funzione per scegliere la colonna da utilizzare come colore e gruppo. Vale a dire vorrei qualcosa di simile

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

In modo che la colonna utilizzata nel ggplot sia determinata dal parametro. Ad esempio per f (“majr”) otteniamo l’effetto di

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

ma per f (“genere”) otteniamo l’effetto di

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

Alcune cose che ho provato:

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

non ha funzionato. Né lo ha fatto

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

Puoi usare aes_string :

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

finché si passa la colonna alla funzione come stringa ( f("majr") anziché f(majr) ). Si noti inoltre che abbiamo modificato le altre colonne, "name" e "rate" , in stringhe.

Se per qualsiasi ragione preferiresti non usare aes_string , potresti cambiarlo (un po 'più ingombrante):

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

Prova a usare aes_string invece di aes .