将twidlr与purrr

时间:2017-05-30 15:51:32

标签: r purrr

library(purrr)
library(tidyverse)
library(twidlr)

# this works
mtcars %>% lm(mpg ~ wt)

# this does not work
mtcars %>% split(.$cyl)  %>% map(~ lm(mpg ~ wt))

# this does work
mtcars %>% split(.$cyl)  %>% map(~ lm(., mpg ~ wt))

twidlr的承诺是它可以与管道配合使用,但它似乎只与“。”一致。惯例,还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

%>%将前一个对象作为函数的第一个参数插入。但是表达式中的%>%

mtcars %>% split(.$cyl)  %>% map(~ lm(mpg ~ wt))

适用于插入函数mtcars %>% split(.$cyl)的对象map(),而不是函数lm()。因此管道仍在工作,twidlr仍在替换lm的功能,但表达式无法知道你想要为lm提供第一个参数。

对于任何map表达式都是如此。例如:

1:4 %>% map(~ mean())

不知道在mean()函数中插入一个参数。