首页 > 解决方案 > 在 purrr 工作流程中使用 mutate

问题描述

我得到了以下数据集:

dflist <- list(mtcars, mtcars)

dflist[[1]] %>%
  mutate(cyl2 = cyl * 2)

这行得通!

dflist %>%
  map(.x, ~.x$cyl2 = .x$cyl * 2)

Error: unexpected '=' in:
"dflist %>%
  map(.x, ~x$cyl2 ="

这会导致错误。我尝试了其他选项,但该功能除了=标志之外没有。那里有什么问题?

标签: rdplyrpurrr

解决方案


尝试 :

library(dplyr)
library(purrr)

dflist %>% map(~.x %>% mutate(cyl2 = cyl * 2))

#[[1]]
#    mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2
#1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4   12
#2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4   12
#3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    8
#4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1   12
#5  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2   16
#....

#[[2]]
#    mpg cyl  disp  hp drat    wt  qsec vs am gear carb cyl2
#1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4   12
#2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4   12
#3  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1    8
#4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1   12
#5  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2   16
#...

或将其保存在基础 R 中:

lapply(dflist, function(x) transform(x, cyl2 = cyl * 2))

推荐阅读