2013-03-19 19 views
5

Korzystanie aes_string ułatwia skonstruowanie funkcji wziąć parametry działki:ggplot aes_string z interakcji

p <- ggplot(mtcars, aes_string(x="mpg", y="wt", group=interaction("cyl","gear"))) + 
    geom_point() 

Teraz napisać funkcję

make_plot <- function(x,y, interact) { 
    p <- ggplot(mtcars, aes_string(x=x, y=y, group=interact)) + 
     geom_point() 
} 

i wywołać funkcję

make_plot("mpg","wt",c("cyl","gear")) 

Ale tutaj interakcja nie jest używana, tzn. Nie jest interpretowana. Nie chcę używać oddzielnych zmiennych dla interakcji bcos, ta sama funkcja mogłaby być użyta dla innych działek. W jaki sposób mam zamiar wprowadzić zmienną interakcji tak, aby była akceptowana i rozumiana przez ggplot?

+2

'paste0 ("interakcji (" paste0 ('' "interakcje '"', zapaść =" ") , ")") '? – hadley

Odpowiedz

2

Według this odpowiedź to powinno działać (bez cytowania colnames):

p <- ggplot(mtcars, aes_string(x=x, y=y, group=paste0("interaction(", paste0(interact, 
    collapse = ", "), ")"))) + geom_point()