2014-02-05 16 views
13

In ggplot2 können Sie Zeichenargumente innerhalb einer benutzerdefinierten Funktion mit aes_string übergeben. Wie können Sie das gleiche für Facettengitter tun, die eine Formel, nicht aes nimmt?Übergeben Sie die Zeichenfolge an facet_grid: ggplot2

FUN <- function(data, x, y, fac1, fac2) { 
    ggplot(data = data, aes_string(x=x, y=y)) + 
    geom_point() + facet_grid(as.formula(substitute(fac1 ~ fac2))) 
} 


FUN(mtcars, 'hp', 'mpg', 'cyl', 'am') 
+2

'as.formula (Paste (fac1, "~", fac2))' – baptiste

Antwort

23

reformulate() scheint gut zu funktionieren.

FUN <- function(data, x, y, fac1, fac2) { 
     ggplot(data = data, aes_string(x=x, y=y)) + 
     geom_point() + facet_grid(reformulate(fac2,fac1)) 
} 

FUN(mtcars, 'hp', 'mpg', 'cyl', 'am') 

enter image description here

+0

Perfect. Wusste nicht über 'reformulate'. –

+2

Wenn Sie nur horizontal oder vertikal facettieren möchten, funktioniert auch etwas wie 'reformulate (fac1,". ")'. – naco

Verwandte Themen