r - 在 mutate 之外使用 nest 和 purrr::map

标签 r dplyr tidyr purrr

假设我想根据 cyl 分组将 mtcars 拆分为 3 个 csv 文件。我可以使用 mutate 来做到这一点,但它会创建一个 NULL输出中的列。

library(tidyverse)
by_cyl = mtcars %>% 
           group_by(cyl) %>%
           nest()
by_cyl %>%
  mutate(unused = map2(data, cyl, function(x, y) write.csv(x, paste0(y, '.csv'))))

有没有办法在不调用 mutate 的情况下对 by_cyl 对象执行此操作?

最佳答案

这是一个使用 purrr 的选项没有 mutate来自 dplyr .

library(tidyverse)
mtcars %>%
  split(.$cyl) %>%
  walk2(names(.), ~write_csv(.x, paste0(.y, '.csv')))

更新

这会降低 cyl列之前保存输出。
library(tidyverse)
mtcars %>%
  split(.$cyl) %>%
  map(~ .x %>% select(-cyl)) %>%
  walk2(names(.), ~write_csv(.x, paste0(.y, '.csv')))

更新2
library(tidyverse)
by_cyl <- mtcars %>% 
  group_by(cyl) %>%
  nest()
by_cyl %>%
  split(.$cyl) %>%
  walk2(names(.), ~write_csv(.x[["data"]][[1]], paste0(.y, '.csv')))

关于r - 在 mutate 之外使用 nest 和 purrr::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46459567/

相关文章:

r - 在 R 中的 dplyr 中分组后如何保留其他变量?

r - 使用 tidyverse 进行条件过滤

r - 计算不同客户之间的常见元素集

r - 将某一特定列求和为每 2 种和 3 种可能组合中的 n 列

r - 无法将 tidyselect `everything()` 与 `group_by()` 和 `fill()` 结合使用

R比较两个数组

r - 曲线 R 下的阴影面积

r - 使用 R 进行 CPU 和内存高效的 NGram 提取

python - 在 R 中打开 pickled sklearn 文件

r - 如何将基本 r 中基于滞后的列转换转换为 dplyr 管道?