将twidlr与purrr结合使用
twidlr的承诺是它可以与管道一起工作,但它似乎只与“.”约定一致,还是我遗漏了什么?A将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))
%%>%%
将上一个对象作为函数的第一个参数插入。但是表达式中的%>%
:
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())