2011-10-17 14 views
5

Proszę rozważyć następujący kod:Jak przekazywać/oceniać argumenty funkcji w ramach innej funkcji do użycia z ggplot?

test <- function(x,n){ 

selection<-names(x)[n] 
graph <- ggplot(x, aes(factor(selection))) 
graph + geom_bar() 
} 

test(mtcars,1) 

zgłasza błąd przyczyną R nie można znaleźć wybór. Grałem też bez żadnego sukcesu z substitute, eval i get. Znalazłem this similar question i myślałem, że rozumiem odpowiedź Joris', ale nie mogę użyć tej samej sztuczki dla argumentów ggplota.

Odpowiedz

9

Do tego celu można użyć aes_string. Tak więc test powinno być takie:

test <- function(x,n){ 
    graph <- ggplot(x, aes_string(x = names(x)[n])) 
    graph + geom_bar() 
} 
+0

Dzięki koshke, chciałabym, aby nie przegapić tak wielu drobnych sztuczek przez cały czas. Jednak trochę pomaga zrozumieć, jak napisano ggplota. –