web-dev-qa-db-fra.com

Que signifie%>% en R

Je suis cet exemple, le server.R , le fichier est ici .

Je prévois de faire un filtre similaire, mais je ne sais plus ce que %>% fait.

 # Apply filters
    m <- all_movies %>%
      filter(
        Reviews >= reviews,
        Oscars >= oscars,
        Year >= minyear,
        Year <= maxyear,
        BoxOffice >= minboxoffice,
        BoxOffice <= maxboxoffice
      ) %>%
      arrange(Oscars)
104
ben_says

L’opérateur infixe %>% ne fait pas partie de la base R mais est en fait défini par le paquetage magrittr ( CRAN ) et est très utilisé par dplyr ( CRAN ).

Cela fonctionne comme une pipe, d’où la référence au célèbre tableau de Magritte La trahison des images .

Ce que fait la fonction est de passer le côté gauche de l'opérateur au premier argument du côté droit de l'opérateur. Dans l'exemple suivant, la trame de données iris est transmise à head():

library(magrittr)
iris %>% head()
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

Ainsi, iris %>% head() est équivalent à head(iris).

Souvent, %>% est appelé plusieurs fois pour "chaîner" des fonctions ensemble, ce qui permet d'obtenir le même résultat que l'imbrication. Par exemple, dans la chaîne ci-dessous, iris est passé à head(), puis le résultat est passé à summary().

iris %>% head() %>% summary()

Ainsi, iris %>% head() %>% summary() est équivalent à summary(head(iris)). Certaines personnes préfèrent chaîner à imbriquer car les fonctions appliquées peuvent être lues de gauche à droite plutôt que de l'intérieur.

212
Andrie