/ / Dostęp do zmiennej w funkcji ggplot - r, ggplot2

Dostęp do zmiennej w funkcji ggplot - r, ggplot2

Mam przykładowe dane poniżej

data <- data.frame(yr=c(1999,2000,2001,2002,2003,2004,2005,2006,2007,2009,2010,2011,2012),
ntemp =c(11,12,13,14,15,16,17,18,19,20,21,12,23))

Kiedy próbuję uruchomić tę funkcję, aby uzyskać dostęp do zmiennej wewnątrz funkcji ggplot.

FUN<-function(data, fun.y,yr) {
fun.data <- data
ggplot(fun.data,aes(yr, fun.y))+geom_point()+scale_y_continuous(fun.y)
}

FUN(data, "ntemp", yr)

Dostaję Error in eval(expr, envir, enclos) : object "fun.y" not found

Jak mogę rozwiązać ten problem na R3.02?

Odpowiedzi:

2 dla odpowiedzi № 1

aes patrzy tylko na zmienne w data argument. Jeśli chcesz przekazać zmienną jako argument do FUN po nazwie postaci użyj aes_string:

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

FUN(data, y="ntemp", x="yr")

Mała korekta: zmienna wewnątrz aes Wywołanie należy zdefiniować w zakresie, w którym oceniany jest obiekt ggplot, więc technicznie zmienna jest najpierw sprawdzana w danych, a następnie w środowisku globalnym (domyślnie). Widzieć to i to pytania.