Predicados

Programação Funcional Intermediária com purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

O que é um predicado?

Predicados: retornam TRUE ou FALSE

  • Testam condições
  • Existem no base R: is.numeric(), %in%, is.character(), etc.

 

is.numeric(10)
TRUE
Programação Funcional Intermediária com purrr

O que é um funcional de predicado?

Funcionais de predicado:

  • Recebem um elemento e um predicado
  • Aplicam o predicado ao elemento

 

keep(airquality, is.numeric)
Programação Funcional Intermediária com purrr

every(): todo elemento satisfaz a condição?

# Todos os elementos de visits2016 são numéricos?
every(visits2016, is.numeric)

# A média de todos os meses é acima de 1000? every(visits2016, ~ mean(.x) > 1000)
TRUE

FALSE

some(): alguns elementos satisfazem a condição?

# A média de alguns meses é acima de 1000? 
some(visits2016, ~ mean(.x) > 1000)
TRUE
Programação Funcional Intermediária com purrr

detect_index()

# Qual é o primeiro elemento com média acima de 1000?
detect_index(visits2016, ~ mean(.x) > 1000)
1
# Qual é o último elemento com média acima de 1000?
detect_index(visits2016, ~ mean(.x) > 1000, .right = TRUE)
11
Programação Funcional Intermediária com purrr

has_element() e detect()

# Qual é o valor do primeiro elemento com média acima de 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
# Algum mês tem média de 981?
visits2016_mean <- map(visits2016, mean)
has_element(visits2016_mean,981)
TRUE
Programação Funcional Intermediária com purrr

Vamos praticar!

Programação Funcional Intermediária com purrr

Preparing Video For Download...