当使用for循环将数据帧作为子集时,如何将数据帧写入csv

当使用for循环将数据帧作为子集时,如何将数据帧写入csv,r,R,在使用For循环将数据子集之后,我想自动写入每个数据帧的.csv。这可能发生在我的for循环中,也可能是一个单独的循环,我只是不知道如何进行 我希望每个csv文件的命名也基于数据帧的名称 for (i in FILENAME$COLUMN) { nam <- paste("NEW_FILENAME", i, sep = "_") assign(nam, FILENAME[ FILENAME$COLUMN==i,]) } for(文件名$COLUMN中的i){ nam尝试使

在使用For循环将数据子集之后,我想自动写入每个数据帧的.csv。这可能发生在我的for循环中,也可能是一个单独的循环,我只是不知道如何进行

我希望每个csv文件的命名也基于数据帧的名称

for (i in FILENAME$COLUMN) {
  nam <- paste("NEW_FILENAME", i, sep = "_")
  assign(nam, FILENAME[
    FILENAME$COLUMN==i,])
}
for(文件名$COLUMN中的i){

nam尝试使用
apply
family执行此操作,而使用
split
的帮助,它将为您拥有的每个唯一
值创建数据帧列表。因此,您可以创建不同的数据帧,也可以仅在一个命令中将它们写入不同的
csv
文件中

例如,使用
mapply
可以

mapply(function(x, y) 
 write.csv(x, paste0("path_of_file/NEW_FILENAME_", y, ".csv"), row.names = FALSE),
    split(FILENAME, FILENAME$COLUMN), seq_along(unique(FILENAME$COLUMN)))
这适用于
mtcars
dataset,其中我基于
cyl
列创建单独的数据帧

mapply(function(x, y) 
   write.csv(x, paste0("NEW_FILENAME_", y, ".csv"), row.names = FALSE), 
      split(mtcars, mtcars$cyl), seq_along(unique(mtcars$cyl)))

如果只想编写文件,可以使用
tidyverse
解决方案。例如,使用
mtcars
dataset:

library(tidyverse)

mtcars %>%
  group_by(gear, carb) %>%
  do(
    write_csv(., sprintf("new_mtcars_g%s_c%s.csv", .$gear[1], .$carb[1]))
  ) %>% 
  invisible()