Predicate

Programare funcțională intermediară cu purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

Ce este un predicat?

Predicate: returnează TRUE sau FALSE

  • Testează condiții
  • Există în R de bază: is.numeric(), %in%, is.character(), etc.

 

is.numeric(10)
TRUE
Programare funcțională intermediară cu purrr

Ce este o funcțională cu predicat?

Funcționale cu predicate:

  • Primesc un element și un predicat
  • Aplică predicatul pe element

 

keep(airquality, is.numeric)
Programare funcțională intermediară cu purrr

every(): fiecare element satisface o condiție?

# Sunt toate elementele din visits2016 numerice?
every(visits2016, is.numeric)

# Media fiecărei luni este peste 1000? every(visits2016, ~ mean(.x) > 1000)
TRUE

FALSE

some(): unele elemente satisfac o condiție?

# Media unor luni este peste 1000? 
some(visits2016, ~ mean(.x) > 1000)
TRUE
Programare funcțională intermediară cu purrr

detect_index()

# Care este primul element cu media peste 1000?
detect_index(visits2016, ~ mean(.x) > 1000)
1
# Care este ultimul element cu media peste 1000?
detect_index(visits2016, ~ mean(.x) > 1000, .right = TRUE)
11
Programare funcțională intermediară cu purrr

has_element() și detect()

# Care este valoarea primului element cu media peste 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
# O lună are media 981?
visits2016_mean <- map(visits2016, mean)
has_element(visits2016_mean,981)
TRUE
Programare funcțională intermediară cu purrr

Să exersăm!

Programare funcțională intermediară cu purrr

Preparing Video For Download...