清晰的purrr语法

Ale*_*lex 10 r purrr

我经常发现自己在使用时在变量名中做出了错误的选择purrr.

例如,在purrr的github页面上获取代码.

library(purrr)

mtcars %>%
  split(.$cyl)
Run Code Online (Sandbox Code Playgroud)

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

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

akr*_*run 10

的.表示该数据对象,并通过使用$其提取柱.它也可以接受

mtcars %>%
    split(.[['cyl']]
Run Code Online (Sandbox Code Playgroud)

随着在mutate/summarise/group_by/select/arrange等,我们可以简单地通过列名,但它是不同的,因为split是一个base R功能,它无法找到数据集的环境中,列"团"是,除非我们提取列

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

mtcars %>%
    nest(-cyl) 
Run Code Online (Sandbox Code Playgroud)

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

  • @Alex 你的意思是`mtcars %>% nest(-cyl) %>% mutate(Summary = map(data, ~ lm(mpg ~ wt, data = .x) %>% summary)) %>% .$Summary` (2认同)
  • @akrun在这里得到类似的输出,我们可以使用dplyr :: group_split,mtcars%>%group_split(cyl)。元素不会被命名。 (2认同)