Predicati

Programmazione funzionale intermedia con purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

Che cos'è un predicato?

Predicati: restituiscono TRUE o FALSE

  • Verificano condizioni
  • Esistono in base R: is.numeric(), %in%, is.character(), ecc.

 

is.numeric(10)
TRUE
Programmazione funzionale intermedia con purrr

Che cos'è un functional di predicato?

Predicate functionals:

  • Prendono un elemento e un predicato
  • Applicano il predicato all'elemento

 

keep(airquality, is.numeric)
Programmazione funzionale intermedia con purrr

every(): ogni elemento soddisfa una condizione?

# Tutti gli elementi di visits2016 sono numerici?
every(visits2016, is.numeric)

# La media di ogni mese è sopra 1000? every(visits2016, ~ mean(.x) > 1000)
TRUE

FALSE

some(): alcuni elementi soddisfano una condizione?

# La media di alcuni mesi è sopra 1000?
some(visits2016, ~ mean(.x) > 1000)
TRUE
Programmazione funzionale intermedia con purrr

detect_index()

# Qual è il primo elemento con media sopra 1000?
detect_index(visits2016, ~ mean(.x) > 1000)
1
# Qual è l'ultimo elemento con media sopra 1000?
detect_index(visits2016, ~ mean(.x) > 1000, .right = TRUE)
11
Programmazione funzionale intermedia con purrr

has_element() e detect()

# Qual è il valore del primo elemento con media sopra 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 mese ha media pari a 981?
visits2016_mean <- map(visits2016, mean)
has_element(visits2016_mean,981)
TRUE
Programmazione funzionale intermedia con purrr

Esercitiamoci!

Programmazione funzionale intermedia con purrr

Preparing Video For Download...