keep()와 discard()로 나눠 보기
결과를 두 그룹으로 나누려고 합니다: 100을 초과한 날과 100 미만인 날입니다. 이를 위해 keep()와 discard()를 함께 사용하겠습니다.
왜 함수가 두 개일까요? 하나로는 안 될까요? is_less_than_hundred라는 매퍼를 만들면 되지 않을까요?
가능은 하지만, 실수할 여지가 더 커집니다. 복사/붙여넣기보다는
keep()에서discard()로 전환하는 편이 훨씬 쉽습니다. 두 함수를 함께 쓰면 매퍼는 하나만 필요합니다. 즉, 임계값을 바꾸고 싶을 때 매퍼가 두 개라면 두 번 바꿔야 하지만, 지금처럼 하면 한 번만 바꾸면 됩니다.
이것은 코딩할 때 지향해야 할 원칙입니다: 어떤 값을 변경해야 할 때 한 곳만 고치면 되도록 코드를 작성하세요.
all_visits는 워크스페이스에 그대로 있습니다.
이 연습은 강의의 일부입니다
purrr로 배우는 중급 함수형 프로그래밍
연습 안내
- 요일 이름을 추가하기 위해
set_names()함수를all_visits에 매핑해all_visits_named를 만드세요. .x가 100을 초과하는지 검사하는 매퍼threshold를 만드세요.- 100을 초과하는 요소만 유지해
group_over를 만드세요. - 100을 초과하는 요소를 버려
group_under를 만드세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Set the name of each subvector
day <- c("mon", "tue", "wed", "thu", "fri", "sat", "sun")
all_visits_named <- ___(all_visits, ~ ___(.x, ___))
# Create a mapper that will test if .x is over 100
threshold <- ___
# Run this mapper on the all_visits_named object: group_over
group_over <- ___(all_visits_named, ~ ___(.x, ___))
# Run this mapper on the all_visits_named object: group_under
group_under <- ___(all_visits_named, ~ ___(.x, ___))