将twidlr与purrr结合使用

将twidlr与purrr结合使用,r,purrr,R,Purrr,twidlr的承诺是它可以与管道一起工作,但它似乎只与“.”约定一致,还是我遗漏了什么?A%%>%%将上一个对象作为函数的第一个参数插入。但是表达式中的%>%: library(purrr) library(tidyverse) library(twidlr) # this works mtcars %>% lm(mpg ~ wt) # this does not work mtcars %>% split(.$cyl) %>% map(~ lm(mpg ~ wt))

twidlr的承诺是它可以与管道一起工作,但它似乎只与“.”约定一致,还是我遗漏了什么?

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

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))
应用于插入到函数
map()
的对象
mtcars%>%split(.$cyl)
,而不是函数
lm()
。因此,管道仍在工作,twidlr仍在替换
lm
的功能,但表达式无法知道您是否希望为lm提供第一个参数

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

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

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

包含
split
的快速解决方案:
mtcars%%>%split(.$cyl)%%>%map(lm,mpg~wt)
刚刚添加,这也与使用
~
有关,这是创建匿名函数的快捷方式。查看“R for Data Science”中的“地图功能”了解详细信息:
1:4 %>% map(~ mean())