我的问题与以下问题直接相关: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
的内容,但似乎无法弄清楚如何实现它。
答案 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")))