Prédicats

Programmation fonctionnelle intermédiaire avec purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

Qu'est-ce qu'un prédicat ?

Prédicats : renvoient TRUE ou FALSE

  • Tester des conditions
  • Présents dans base R : is.numeric(), %in%, is.character(), etc.

 

is.numeric(10)
TRUE
Programmation fonctionnelle intermédiaire avec purrr

Qu'est-ce qu'une fonctionnelle de prédicat ?

Fonctionnelles de prédicat :

  • Prennent un élément et un prédicat
  • Appliquent le prédicat à l'élément

 

keep(airquality, is.numeric)
Programmation fonctionnelle intermédiaire avec purrr

every() : est-ce que tous les éléments satisfont une condition ?

# Tous les éléments de visits2016 sont-ils numériques ?
every(visits2016, is.numeric)

# La moyenne de chaque mois est-elle > 1000 ? every(visits2016, ~ mean(.x) > 1000)
TRUE

FALSE

some() : est-ce que certains éléments satisfont une condition ?

# La moyenne de certains mois est-elle > 1000 ?
some(visits2016, ~ mean(.x) > 1000)
TRUE
Programmation fonctionnelle intermédiaire avec purrr

detect_index()

# Quel est le premier élément dont la moyenne dépasse 1000 ?
detect_index(visits2016, ~ mean(.x) > 1000)
1
# Quel est le dernier élément dont la moyenne dépasse 1000 ?
detect_index(visits2016, ~ mean(.x) > 1000, .right = TRUE)
11
Programmation fonctionnelle intermédiaire avec purrr

has_element() et detect()

# Quelle est la valeur du premier élément dont la moyenne dépasse 1000 ?
detect(visits2016, ~ mean(.x) > 1000, .right = TRUE)
[1] 1289  782 1432 1171 1094 1015  582  946 1191 1393 1307 1125 1267 1345 1066  810  583 
[18] 733  795  766  873  656 1018  645  949  938 1118 1106 1134 1126
# Un mois a-t-il une moyenne de 981 ?
visits2016_mean <- map(visits2016, mean)
has_element(visits2016_mean,981)
TRUE
Programmation fonctionnelle intermédiaire avec purrr

Passons à la pratique !

Programmation fonctionnelle intermédiaire avec purrr

Preparing Video For Download...