清晰的 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
随着新版本的 dplyr
(0.8.1
测试),@Moody_Mudskipper
评论说 group_split
mtcars %>%
group_split(cyl)
我经常发现自己在使用 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
函数,它无法找到除非我们提取列
我们可以在 tidyverse
中做的一个选择是 nest
除 'cyl' 之外的所有其他变量,即
mtcars %>%
nest(-cyl)
现在,我们有一个名为 'data' 的 list
列,其中包含所有其他列作为 list
of 'data.frame`s
随着新版本的 dplyr
(0.8.1
测试),@Moody_Mudskipper
group_split
mtcars %>%
group_split(cyl)