R-如何在purrr::map中使用显示管道%$%



为了解决这个问题,让我们将mtcars数据集拆分为几个较小的数据集,例如基于carb,并将它们全部存储在列表中

mtlist <- group_split(mtcars, carb)

现在让我们说,我只在其中一个数据集上操作一些管道,最后我想使用exposition运算符%$%:选择一个变量

mtlist[[1]] %>% 
mutate(cyl = 6*cyl) %$%
cyl

输出:

24 36 36 24 24 24 24

但是,如果我希望在整个mtlist上这样做呢?以下不起作用:

mtlist %>% 
map(mutate, cyl = 6*cyl) %$%
cyl

那么该怎么做呢?

我知道我可以通过其他方式实现相同的最终输出,例如map(select, cyl),但我希望学习如何使用展示管道%$%来实现,特别是

如果您查看%$%的文档,它会显示:

[%$%][e]将lhs中的名称导出到rhs表达式。当函数没有内置的数据参数时,这很有用。

在您的情况下,lhs的名称就是列表的名称,因此您不能真正直接使用cyl。你必须在map呼叫中完成:

library(magrittr)
library(purrr)
library(dplyr)
mtlist %>% 
map(mutate, cyl = 6*cyl) %>%
map(~ .x %$% cyl)

返回

[[1]]
[1] 24 36 36 24 24 24 24
[[2]]
[1] 48 24 24 24 48 48 48 24 24 24
[[3]]
[1] 48 48 48
[[4]]
[1] 36 36 48 36 36 48 48 48 48 48
[[5]]
[1] 36
[[6]]
[1] 48

最新更新