清晰的 purrr 语法

Clarity on purrr syntax

我经常发现自己在使用 purrr.

时在变量名中做出错误的选择

例如,取purrr的github页的代码。

library(purrr)

mtcars %>%
  split(.$cyl)

split(.$cyl)中我经常错误地使用split(cyl)。这似乎是最明显的选择,因为它与其他 tidyverse 命令如 select(cyl) 一致。

我的问题是为什么变量名前面的.$.

. 表示数据对象,使用 $ 提取列。它还可以接收

mtcars %>%
    split(.[['cyl']]

mutate/summarise/group_by/select/arrange 等中,我们可以简单地传递列名,但它是不同的,因为 split 是一个 base R 函数,它无法找到除非我们提取列

,否则列 'cyl' 所在的数据集

我们可以在 tidyverse 中做的一个选择是 nest 除 'cyl' 之外的所有其他变量,即

mtcars %>%
    nest(-cyl) 

现在,我们有一个名为 'data' 的 list 列,其中包含所有其他列作为 list of 'data.frame`s


随着新版本的 dplyr0.8.1 测试),@Moody_Mudskipper

评论说 group_split
mtcars %>%
       group_split(cyl)