데이터셋 나누기
이전 연습 문제에서 트윗 한 개당 리트윗 수의 평균이 3.3이라는 것을 확인했어요. 이번에는 이 평균을 넘는 트윗이 몇 개인지, 평균보다 적은 트윗이 몇 개인지 살펴보겠습니다.
이를 위해 먼저 .x가 3.3보다 큰지 검사하는 매퍼를 만들 거예요. 그런 다음 map_at()을 미리 채워 둘 텐데, .at은 "retweet_count", .f는 먼저 우리가 만든 매퍼, 두 번째는 그 매퍼의 부정이 되도록 하겠습니다.
이 강의가 만들어진 이후 purrr의 동작이 변경되어, partial()의 .f와 map_at()의 .f 사이에 인자 충돌이 생기지 않도록 준인용 등호 연산자 :=(일명 "walrus operator")를 사용해야 합니다. 이 연습 문제에서는 :=가 =처럼 동작하지만, 해당 인자가 partial() 내부에 남지 않고 map_at()으로 전달되어야 함을 partial()에 알려 준다고만 이해하시면 됩니다.
이 도구들을 만든 뒤에는 rstudioconf 데이터셋에서 "original tweets"만 추출한 non_rt 객체에 적용하겠습니다.
purrr는 이미 불러와져 있어요.
이 연습은 강의의 일부입니다
purrr로 배우는 중급 함수형 프로그래밍
연습 안내
.x가3.3보다 큰지 검사하는 매퍼mean_above를 만드세요.map_at()을 두 가지 버전으로 미리 채우세요: 하나는"retweet_count"와mean_above, 다른 하나는"retweet_count"와mean_above의 부정을 사용합니다.이 두 개의 미리 채운 함수를
non_rt에 매핑하고,"retweet_count"요소만 유지하세요.두 결과의 크기를 구하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Create mean_above, a mapper that tests if .x is over 3.3
mean_above <- ___(~ ___)
# Prefil map_at() with "retweet_count", mean_above for above,
# and mean_above negation for below
above <- partial(___, .at = "retweet_count", .f := ___ )
below <- partial(___, .at = "retweet_count", .f := ___ )
# Map above() and below() on non_rt, keep the "retweet_count"
ab <- ___(non_rt, ___) %>% ___("retweet_count")
bl <- ___(non_rt, ___) %>% ___("retweet_count")
# Compare the size of both elements
___(ab)
___(bl)