Predikáty

Intermediate Functional Programming with purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

Co je predikát?

Predikáty: vrací TRUE nebo FALSE

  • Testují podmínky
  • Existují v základním R: is.numeric(), %in%, is.character(), atd.

 

is.numeric(10)
TRUE
Intermediate Functional Programming with purrr

Co je predikátový funkcionál?

Predikátové funkcionály:

  • Přijímají prvek a predikát
  • Aplikují predikát na prvek

 

keep(airquality, is.numeric)
Intermediate Functional Programming with purrr

every(): splňují všechny prvky podmínku?

# Jsou všechny prvky visits2016 numerické?
every(visits2016, is.numeric)

# Je průměr každého měsíce nad 1000? every(visits2016, ~ mean(.x) > 1000)
TRUE

FALSE

some(): splňují některé prvky podmínku?

# Je průměr některého měsíce nad 1000? 
some(visits2016, ~ mean(.x) > 1000)
TRUE
Intermediate Functional Programming with purrr

detect_index()

# Který je první prvek s průměrem nad 1000?
detect_index(visits2016, ~ mean(.x) > 1000)
1
# Který je poslední prvek s průměrem nad 1000?
detect_index(visits2016, ~ mean(.x) > 1000, .right = TRUE)
11
Intermediate Functional Programming with purrr

has_element() a detect()

# Jaká je hodnota prvního prvku s průměrem nad 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
# Má některý měsíc průměr 981?
visits2016_mean <- map(visits2016, mean)
has_element(visits2016_mean,981)
TRUE
Intermediate Functional Programming with purrr

Pojďme si procvičit!

Intermediate Functional Programming with purrr

Preparing Video For Download...