2011-12-20 6 views
10

Quiero escribir una función que toma un marco de datos y grafica todas las columnas en ese marco de datos como histogramas.Cómo convertir los nombres de las columnas del dataframe de cadenas en argumentos adecuados para (qplot, ggplot2)?

Para una trama de datos cuyos nombres de columna que sé de antemano, puedo escribir

qplot(colname1, data=df, geom='histogram') 
qplot(colname2, data=df, geom='histogram') 
... 

pero quiero hacer esto de forma genérica, de modo que pueda utilizar el nombre de la columna como una cadena "colname1".

En otras palabras, la forma de escribir

plot_histogram_of_column <- function(df, colname) { 
    # qplot(colname, data=df, geom='histogram') won't work 
} 

Respuesta

20

Uso ggplot y aes_string. Algo como esto:

ggplot(data = df, aes_string(x = colname)) + geom_histogram() 

aes_string fue escrito precisamente para este propósito.

+2

Como se documenta aquí: http://had.co.nz/ggplot2/aes.html Tenga en cuenta, sin embargo, que, hasta donde puedo decir, NO hay ninguna página del sitio de documentación ggplot2 con enlaces a esto, por lo que la única forma de encontrarlo es sabiendo buscarlo. –

+0

@ Maxy-B Los documentos incorporados ('? Aes') están muy mejorados en la versión 0.9.0, y contienen un enlace a la página de ayuda para' aes_string'. No recuerdo si este fue el caso en 8.9.0. – joran

+0

Sí. Acabo de resolver de forma independiente mi propio problema relacionado con esto. Esta función es increíblemente oscura y difícil de descubrir, pero importante. Seguramente una de las primeras cosas que querría parametrizar cuando trace un gran conjunto de datos es la identidad de la serie y, sin embargo, los ejemplos no enfatizan esto. (Edité tu título para mayor claridad) – smci

Cuestiones relacionadas