시작하기무료로 시작하기

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, ___))
코드 편집 및 실행