Prädikate

Fortgeschrittene funktionale Programmierung mit purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

Was ist ein Prädikat?

Prädikate: geben TRUE oder FALSE zurück

  • Prüfen Bedingungen
  • Gibt es in base R: is.numeric(), %in%, is.character(), usw.

 

is.numeric(10)
TRUE
Fortgeschrittene funktionale Programmierung mit purrr

Was ist ein Prädikats-Funktional?

Prädikats-Funktionale:

  • Nehmen ein Element & ein Prädikat
  • Wenden das Prädikat auf das Element an

 

keep(airquality, is.numeric)
Fortgeschrittene funktionale Programmierung mit purrr

every(): erfüllt jedes Element eine Bedingung?

# Sind alle Elemente von visits2016 numerisch?
every(visits2016, is.numeric)

# Liegt der Mittelwert jedes Monats über 1000? every(visits2016, ~ mean(.x) > 1000)
TRUE

FALSE

some(): erfüllen manche Elemente eine Bedingung?

# Liegt der Mittelwert mancher Monate über 1000?
some(visits2016, ~ mean(.x) > 1000)
TRUE
Fortgeschrittene funktionale Programmierung mit purrr

detect_index()

# Welches ist das erste Element mit einem Mittelwert über 1000?
detect_index(visits2016, ~ mean(.x) > 1000)
1
# Welches ist das letzte Element mit einem Mittelwert über 1000?
detect_index(visits2016, ~ mean(.x) > 1000, .right = TRUE)
11
Fortgeschrittene funktionale Programmierung mit purrr

has_element() und detect()

# Wie lautet der Wert des ersten Elements mit einem Mittelwert über 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
# Hat ein Monat einen Mittelwert von 981?
visits2016_mean <- map(visits2016, mean)
has_element(visits2016_mean,981)
TRUE
Fortgeschrittene funktionale Programmierung mit purrr

Lass uns üben!

Fortgeschrittene funktionale Programmierung mit purrr

Preparing Video For Download...