purrr로 배우는 중급 함수형 프로그래밍
Colin Fay
Data Scientist & R Hacker
library(broom)
library(dplyr)
lm(Sepal.Length ~ Species, data=iris) %>% tidy() %>% filter(p.value < 0.05)
lm(Pepal.Length ~ Species, data=iris) %>% tidy() %>% filter(p.value < 0.05)
lm(Sepal.Width ~ Species, data=iris) %>% tidy() %>% filter(p.value < 0.05)
lm(Sepal.Length ~ Species, data=iris) %>% tidy() %>% ilter(p.value < 0.05)
library(purrr) tidy_iris_lm <- compose( as_mapper(~ filter(.x, p.value < 0.05)), tidy, partial(lm, data=iris, na.action = na.fail) )list( Petal.Length ~ Petal.Width, Petal.Width ~ Sepal.Width, Sepal.Width ~ Sepal.Length ) %>% map(tidy_iris_lm)
깔끔한 코드는 다음과 같습니다:
함수 합성:
library(purrr)
rounded_mean <- compose(round, mean)
rounded_mean(1:2811)
1406
# 변경 전
round(mean(1:10))
round(mean(1:100))
round(mean(1:1000))
round(mean(1:10000))
#변경 후
round(median(1:10))
round(median(1:100))
round(median(1:1000))
round(median(1:10000))
-> 4곳 변경
# 변경 전
my_stats <- compose(round, mean)
my_stats(1:10)
my_stats(1:100)
my_stats(1:1000)
my_stats(1:10000)
#변경 후
my_stats <- compose(round, median)
my_stats(1:10)
my_stats(1:100)
my_stats(1:1000)
my_stats(1:10000)
-> 1곳 변경
purrr로 배우는 중급 함수형 프로그래밍