【问题标题】:Export List of Lists as CSV into seperate Files or Excel Sheets将列表列表以 CSV 格式导出到单独的文件或 Excel 表格中
【发布时间】:2021-02-24 13:16:13
【问题描述】:

我有一个列表列表 mylistsdata.table 对象

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.tablefwrite),命名为对象,即 Output1_a.csv

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

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

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

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

【问题讨论】:

    标签: r export-to-csv export-to-excel


    【解决方案1】:

    对于 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"))
         })
    

    这应该会生成名称为 &lt;outerlist_name&gt;.&lt;innerlist_name&gt;.csv 的 csv 文件

    【讨论】:

    • 谢谢。两者都像魅力一样工作。但是,XLSX approach 给了我每个outerlist 的文件。我想我的解释在这里并不完全准确。如何将所有 outerlist.innerlist 聚合到一个 XLSX 文件中?
    • 你可以只使用 write_xlsx 函数中的平面列表应该这样做writexl::write_xlsx(mylist_flat, "combined.xlsx")
    • 对。我没有想到。感谢您的宝贵时间!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多