将列表列表作为 CSV 导出到单独的文件或 Excel 工作表中

Export List of Lists as CSV into seperate Files or Excel Sheets

我有一个包含 data.table 个对象的列表 mylists

x <- rep("example",5)
y <- 1:5
list1 <- list('a'= data.table(x,y),'b' = data.table(x,y))
list2 <- list('c'= data.table(x,y), 'd' = data.table(x,y))
mylists <- list('Output1'= list1,'Output2' =list2)
mylists

我想将每个列表中的每个对象导出为一个 单独的 CSV 文件(最好使用 data.table 中的 fwrite)命名为对象,即 Output1_a.csv

不能 rbind一个数据。frame/table因为数据需要分开保存。

我试过使用 lapply(mylists,fwrite) 但无法生成具有不同名称的单独文件。

此外 我如何生成一个 xlsx File,其中 mylists 的所有对象都存储在如上所述命名的单独工作表中。

我想知道这两种方式,因为这可能对未来有用。

对于 xlsx 版本,您可以这样做

x <- rep("example",5)
y <- 1:5
list1 <- list('a'= data.table(x,y),'b' = data.table(x,y))
list2 <- list('c'= data.table(x,y), 'd' = data.table(x,y))
mylists <- list('Output1'= list1,'Output2' =list2)
purrr::walk(names(mylists), 
            function(x){
               writexl::write_xlsx(mylists[[x]], 
                                   path = paste0(x, ".xlsx"))
            })

这将生成带有外部列表名称的 xlsx 文件和带有内部列表名称的工作表

对于 csv,我会做这样的事情来首先展平列表

mylists_flat <- unlist(mylists, recursive = FALSE)
walk(names(mylists_flat), 
     function(x){
       write.csv(mylists_flat[[x]], 
                 file = paste0(x, ".csv"))
     })

这应该会生成名为 <outerlist_name>.<innerlist_name>.csv

的 csv 文件