开始使用免费开始使用

用 keep() 和 discard() 分组

我们想把结果分成两组:大于 100 的天数,以及小于 100 的天数。我们将组合使用 keep()discard() 来完成。

为什么要用两个函数?难道不能只用一个函数?能不能创建一个名为 is_less_than_hundred 的 mapper?

当然可以,但那样更容易出错:从 keep() 切换到 discard() 比复制粘贴要容易得多。把两个函数结合起来,我们只需要一个 mapper。这意味着如果想要修改阈值,只需改一次;如果使用两个 mapper,就得改两次。

这是您在编程时应该尽量遵循的原则:编写代码时要让「需要改一处,就只改一处」。

all_visits 仍在您的工作区中可用。

本练习是课程的一部分

使用 purrr 的函数式编程进阶

查看课程

练习说明

  • all_visits 使用 set_names() 并映射,给元素加上星期名称:得到 all_visits_named
  • 创建一个名为 threshold 的 mapper,用于测试 .x 是否大于 100。
  • 通过保留大于 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, ___))
编辑并运行代码