rurowe jest bardzo różne od Ponadto ggplot2
„S. To, co robi operator rury, %>%
, bierze wynik po lewej stronie i umieszcza go jako pierwszy argument funkcji po prawej stronie. Na przykład:
1:10 %>% mean()
# [1] 5.5
Dokładnie odpowiada mean(1:10)
. Rura jest bardziej przydatny do zastąpienia pomnożyć zagnieżdżone funkcje np
x = factor(2008:2012)
x_num = as.numeric(as.character(x))
# could be rewritten to read from left-to-right as
x_num = x %>% as.character() %>% as.numeric()
ale to wszystko jest ładnie wyjaśnione na co What does %>% mean in R?, należy zapoznać się że jeszcze kilka przykładów.
Korzystając z tej wiedzy, możemy ponownie napisać przykłady rur jako funkcje zagnieżdżone i zobaczyć, że wciąż robią to samo; ale teraz to (mam nadzieję) jest oczywiste, dlaczego # 4 nie działa:
# 3. This is acceptable ggplot2 syntax
ggplot(data = mtcars) + geom_point(aes(x=wt, y = mpg))
# 4. This is not
geom_point(aes(ggplot(data = mtcars), x=wt, y = mpg))
ggplot2
zawiera specjalny "+"
metodę ggplot
przedmiotów, których używa, aby dodać do warstwy działek. Nie wiedziałem, dopóki nie zadałeś pytania, że działa ono również z funkcją aes()
, ale najwyraźniej jest to również zdefiniowane. Wszystkie są specjalnie zdefiniowane w ggplot2
. Używanie +
w ggplot2 poprzedza potok i chociaż użycie jest podobne, funkcjonalność jest zupełnie inna.
Jako ciekawostkę marginesie, Hadley Wickham (twórca ggplot2) said that:
... gdybym odkrył rura wcześniej, tam nigdy nie byłem ggplot2, bo mógł napisać grafiki ggplot jak
ggplot(mtcars, aes(wt, mpg)) %>%
geom_point() %>%
geom_smooth()
Również stycznie, nie trzeba wszystkie te importu. Włączenie ich do przykładu utrudnia wykrycie interferencji bibliotek. –
Zmodyfikowałem twoje pytanie, aby użyć wbudowanych danych zamiast własnych danych, aby wyeliminować nieużywane pakiety i sprawić, aby cała sprawa mogła być kopiowana/wklejana. – Gregor