用 keep 清理你的資料
從本課一開始,我們一直在使用一個為期 1 週的 A/B 測試結果。
我們把這些結果放在名為 all_visits 的清單中。這個清單包含 visit_a、visit_b 和 visit_c。這些向量目前沒有名稱。它們各自包含 7 個數字,對應一週中的每一天。
我們想問的第一個問題是:哪些天的平均每小時造訪數超過 100?我們會使用 keep() 函式。不過如果向量沒有名稱,答案就不太好讀:你只會看到數字,卻不知道這些數字對應到哪一天。
好消息是:你可以用 set_names() 函式來解決這個問題。本章要做的就是這件事:先在無名稱向量上使用 keep(),再在已命名的向量上使用。
本練習屬於課程
使用 purrr 的 R 語言中級函式程式設計
練習說明
- 建立一個 mapper,用來測試
.x是否大於 100。你會用到它兩次。 - 將這個 mapper 與
keep()組合,並把它套用到無名稱的清單all_visit上。由於結果沒有名稱,你不知道自己保留了哪些天。 - 使用我們提供的名稱向量,結合
map()與set_names()函式,為每個向量加上名稱。 - 把先前建立的 mapper 套用到新近命名的清單上。可以看到,現在可讀性更好了!
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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, ___))