keep으로 데이터 정리하기
이 강의의 시작부터, 우리는 일주일 동안 진행한 A/B 테스트의 결과를 사용해 왔습니다.
이 결과는 all_visits라는 리스트에 담겨 있습니다. 이 리스트에는 visit_a, visit_b, visit_c가 들어 있고, 해당 벡터들은 이름이 없습니다. 각 벡터에는 일주일의 각 요일을 나타내는 일곱 개 숫자가 들어 있습니다.
가장 먼저 알아보고 싶은 것은 다음과 같습니다: 평균적으로 시간당 방문 수가 100회를 넘긴 요일은 언제인가요? 이를 위해 keep() 함수를 사용하겠습니다. 하지만 벡터에 이름이 없으면 결과를 읽기 어렵습니다. 숫자는 보이지만 그 숫자가 어떤 요일에 해당하는지 알 수 없기 때문입니다.
좋은 소식이 있습니다. set_names() 함수를 사용하면 이 문제를 해결할 수 있습니다. 이번 챕터에서는 먼저 이름 없는 벡터에 keep()을 적용하고, 그다음 이름이 있는 벡터에 적용해 보겠습니다.
이 연습은 강의의 일부입니다
purrr로 배우는 중급 함수형 프로그래밍
연습 안내
.x가 100보다 큰지 테스트하는 매퍼를 만드세요. 이 매퍼는 두 번 사용합니다.- 이 매퍼를
keep()과 결합해 이름 없는 리스트all_visit에 map 하세요. 결과에 이름이 없으므로 어떤 요일이 유지되었는지 알 수 없습니다. - 제공된 이름 벡터를 사용해
map()과set_names()를 결합하여 각 벡터에 이름을 붙이세요. - 새로 이름을 붙인 리스트에 앞에서 만든 매퍼를 다시 map 하세요. 이제 훨씬 읽기 쉬워졌음을 확인할 수 있습니다!
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Create a mapper that test if .x is more than 100
is_more_than_hundred <- ___(~ .x > 100)
# Use this mapper with keep() on the all_visits object
map(all_visits, ~ ___(.x, is_more_than_hundred))
# Use the day vector to set names to all_list
day <- c("mon", "tue", "wed", "thu", "fri", "sat", "sun")
full_visits_named <- map(all_visits, ~ ___(.x, ___))
# Use this mapper with keep()
map(full_visits_named, ~ ___(.x, ___))