Predicados

Programación funcional intermedia con purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

¿Qué es un predicado?

Predicados: devuelven TRUE o FALSE

  • Comprobar condiciones
  • Existen en base R: is.numeric(), %in%, is.character(), etc.

 

is.numeric(10)
TRUE
Programación funcional intermedia con purrr

¿Qué es un funcional de predicado?

Funcionales de predicado:

  • Toman un elemento y un predicado
  • Usan el predicado sobre el elemento

 

keep(airquality, is.numeric)
Programación funcional intermedia con purrr

every(): ¿cumple cada elemento una condición?

# ¿Todos los elementos de visits2016 son numéricos?
every(visits2016, is.numeric)

# ¿La media de todos los meses supera 1000? every(visits2016, ~ mean(.x) > 1000)
TRUE

FALSE

some(): ¿algunos elementos cumplen una condición?

# ¿La media de algunos meses supera 1000?
some(visits2016, ~ mean(.x) > 1000)
TRUE
Programación funcional intermedia con purrr

detect_index()

# ¿Cuál es el primer elemento con una media superior a 1000?
detect_index(visits2016, ~ mean(.x) > 1000)
1
# ¿Cuál es el último elemento con una media superior a 1000?
detect_index(visits2016, ~ mean(.x) > 1000, .right = TRUE)
11
Programación funcional intermedia con purrr

has_element() y detect()

# ¿Cuál es el valor del primer elemento con una media superior a 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
# ¿Algún mes tiene una media de 981?
visits2016_mean <- map(visits2016, mean)
has_element(visits2016_mean,981)
TRUE
Programación funcional intermedia con purrr

¡Vamos a practicar!

Programación funcional intermedia con purrr

Preparing Video For Download...