Predicates

Lập trình hàm nâng cao với purrr

Colin Fay

Data Scientist & R Hacker at ThinkR

Predicate là gì?

Predicates: trả về TRUE hoặc FALSE

  • Kiểm tra điều kiện
  • Có sẵn trong base R: is.numeric(), %in%, is.character(), v.v.

 

is.numeric(10)
TRUE
Lập trình hàm nâng cao với purrr

Predicate functional là gì?

Predicate functionals:

  • Nhận một phần tử và một predicate
  • Áp dụng predicate lên phần tử đó

 

keep(airquality, is.numeric)
Lập trình hàm nâng cao với purrr

every(): có mọi phần tử đều thỏa điều kiện không?

# Tất cả phần tử của visits2016 có phải là số không?
every(visits2016, is.numeric)

# Trung bình của mọi tháng có trên 1000 không? every(visits2016, ~ mean(.x) > 1000)
TRUE

FALSE

some(): có một số phần tử thỏa điều kiện không?

# Trung bình của một số tháng có trên 1000 không? 
some(visits2016, ~ mean(.x) > 1000)
TRUE
Lập trình hàm nâng cao với purrr

detect_index()

# Phần tử đầu tiên có trung bình trên 1000 là vị trí nào?
detect_index(visits2016, ~ mean(.x) > 1000)
1
# Phần tử cuối cùng có trung bình trên 1000 là vị trí nào?
detect_index(visits2016, ~ mean(.x) > 1000, .right = TRUE)
11
Lập trình hàm nâng cao với purrr

has_element() và detect()

# Giá trị của phần tử đầu tiên có trung bình trên 1000 là gì?
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
# Có tháng nào có giá trị trung bình là 981 không?
visits2016_mean <- map(visits2016, mean)
has_element(visits2016_mean,981)
TRUE
Lập trình hàm nâng cao với purrr

Cùng luyện tập nào!

Lập trình hàm nâng cao với purrr

Preparing Video For Download...