R语言 如何编写嵌套tibble来分隔文件

umuewwlo  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(112)

我想为嵌套tibble中的每个组编写单独的.csv文件。

mtcars %>% 
dplyr::group_by(cyl) %>% tidyr::nest() %>%
dplyr::group_walk(~ readr::write_csv(.x$data, paste0(.y$cyl, ".csv")))

这将显示错误消息
write_delim(x,文件,分隔符=“,",na = na,追加=追加,列名称=列名称,: Dataframe (x)不为真
我的代码基于这个答案https://stackoverflow.com/a/54807068/2069472
我可以使用@akrun的方法来取消嵌套数据,如何直接从嵌套的tibble中执行呢?

1l5u6lss

1l5u6lss1#

您可以像这样使用write.csv

library(dplyr)
library(tidyr)
mtcars %>% 
  dplyr::group_by(cyl) %>% 
  tidyr::nest() %>%
  dplyr::group_walk(~ write.csv(.x$data, paste0(.y$cyl, ".csv")))

df_example = read.csv("4.csv")
head(df_example)
#>   X  mpg  disp hp drat    wt  qsec vs am gear carb
#> 1 1 22.8 108.0 93 3.85 2.320 18.61  1  1    4    1
#> 2 2 24.4 146.7 62 3.69 3.190 20.00  1  0    4    2
#> 3 3 22.8 140.8 95 3.92 3.150 22.90  1  0    4    2
#> 4 4 32.4  78.7 66 4.08 2.200 19.47  1  1    4    1
#> 5 5 30.4  75.7 52 4.93 1.615 18.52  1  1    4    2
#> 6 6 33.9  71.1 65 4.22 1.835 19.90  1  1    4    1

创建于2023年3月1日,使用reprex v2.0.2
如果你想使用write_csv,你必须确保你的输入是一个使用as.data.frame的 Dataframe ,如下所示:

library(readr)
library(dplyr)
library(tidyr)
mtcars %>% 
  dplyr::group_by(cyl) %>% 
  tidyr::nest() %>%
  dplyr::group_walk(~ write_csv(as.data.frame(.x$data), paste0(.y$cyl, ".csv")))

df_example = read.csv("4.csv")
head(df_example)
#>    mpg  disp hp drat    wt  qsec vs am gear carb
#> 1 22.8 108.0 93 3.85 2.320 18.61  1  1    4    1
#> 2 24.4 146.7 62 3.69 3.190 20.00  1  0    4    2
#> 3 22.8 140.8 95 3.92 3.150 22.90  1  0    4    2
#> 4 32.4  78.7 66 4.08 2.200 19.47  1  1    4    1
#> 5 30.4  75.7 52 4.93 1.615 18.52  1  1    4    2
#> 6 33.9  71.1 65 4.22 1.835 19.90  1  1    4    1

创建于2023年3月1日,使用reprex v2.0.2

相关问题