開始使用免費開始

用 keep 清理你的資料

從本課一開始,我們一直在使用一個為期 1 週的 A/B 測試結果。

我們把這些結果放在名為 all_visits 的清單中。這個清單包含 visit_avisit_bvisit_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, ___))
編輯並執行程式碼