如何从R中嵌套数据帧的每个元素写入磁盘数据?

时间:2018-07-27 22:03:23

标签: r purrr

我的问题与以下问题直接相关:In R, write each nested data frame to a CSV,但我无法使该解决方案正常工作,并且希望避免安装额外的必需软件包purrrlyr

我需要将嵌套的data.frame的每个元素(data.frame)写入表中,每个元素的名称与嵌套的data.frame的第一列相对应:

ir <- iris %>% group_by(Species) %>% nest() 
ir$Species <- as.character(ir$Species)

A tibble: 3 x 2

Species    data             
  <chr>      <list>           
1 setosa     <tibble [50 x 4]>
2 versicolor <tibble [50 x 4]>
3 virginica  <tibble [50 x 4]>

我尝试了链接解决方案:

temp <- ir %>% purrrlyr::by_row(~write.csv(.$data, file = .$Species)) 

但是收到以下错误:

Error in by_row(., ~write.csv(.$data, file = .$Species)) : 
  STRING_PTR() can only be applied to a 'character', not a 'list'

我已经阅读了purrr::walk的内容,但似乎无法弄清楚如何实现它。

1 个答案:

答案 0 :(得分:2)

我们可以使用map2

library(purrr)
map2(ir$data, ir$Species, ~ write.csv(.x, file = paste0(.y, ".csv")))

如果我们不希望控制台上显示NULL输出消息,请使用iwalk

iwalk(setNames(ir$data, ir$Species), ~ write.csv(.x, file = paste0(.y, ".csv")))