如何从嵌套tibble直接导出分组数据至独立CSV文件?
从嵌套tibble生成分组CSV文件的错误修正
你遇到的错误是因为group_walk中.x$data返回的是列表列(即使每个元素是单个tibble,它本身仍是长度为1的列表),而readr::write_csv要求传入的是data.frame/tibble对象,不是列表,因此触发is.data.frame(x) is not TRUE的报错。
以下是两种可行的修正方案:
方案1:修正group_walk中的数据引用
直接提取列表列中的实际tibble对象(取列表的第一个元素):
mtcars %>% dplyr::group_by(cyl) %>% tidyr::nest() %>% dplyr::group_walk(~ readr::write_csv(.x$data[[1]], paste0(.y$cyl, ".csv")))
方案2:改用purrr::pwalk遍历行(更直观)
pwalk可以直接按行遍历嵌套后的tibble,分别取出分组标识和对应的数据:
mtcars %>% dplyr::group_by(cyl) %>% tidyr::nest() %>% purrr::pwalk(function(cyl, data) { readr::write_csv(data, paste0(cyl, ".csv")) })
或者用更简洁的匿名函数写法:
mtcars %>% dplyr::group_by(cyl) %>% tidyr::nest() %>% purrr::pwalk(~ readr::write_csv(.y, paste0(.x, ".csv")))
内容的提问来源于stack exchange,提问作者psychonomics
相关产品推荐
相关产品推荐

