从大型data.frame写入多个excel/csv文件

从大型data.frame写入多个excel/csv文件,r,excel,csv,xlsx,xlsxwriter,R,Excel,Csv,Xlsx,Xlsxwriter,我有一个超过500000行的大数据帧。我希望将其导出到具有特定行限制(例如100000行)的多个excel/csv文件中 我的解决办法是: library(openxlsx) write.xlsx(df[1:100000,], "path") write.xlsx(df[100001:200000,], "path") write.xlsx(df[200001:300000,], "path") write.xlsx(df[300001:400000,], "path") write.xlsx(

我有一个超过500000行的大数据帧。我希望将其导出到具有特定行限制(例如100000行)的多个excel/csv文件中

我的解决办法是:

library(openxlsx)
write.xlsx(df[1:100000,], "path")
write.xlsx(df[100001:200000,], "path")
write.xlsx(df[200001:300000,], "path")
write.xlsx(df[300001:400000,], "path")
write.xlsx(df[400001:500000,], "path")
有什么优雅的方法吗?
谢谢

你可以试试

breaks <- split(1:nrow(df), ceiling(seq_along(1:nrow(df))/1e5))
lapply(breaks, 
   function(x)                  
     write.xlsx(
          df[x,],
          paste0("path",substr(x[1],1,1),".xlsx")
)
中断

上面将创建文件\u name1.xlsx、文件\u name2.xlsx。。。。等等。

当你说优雅时,你真的是指“简洁”吗?是的,我希望通过一个函数将逻辑应用于超大数据集。
batchSize=100; # number of rows in single output file
filename="file_name";  # prefix of output file

chunks=split(df, floor(0:(nrow(df)-1)/batchSize))
for (i in 1:length(chunks))
{
  write.xlsx(chunks[[i]],paste0(filename,i,'.xlsx'))
}