【问题标题】:Write a list of dataframe in an excel file在 excel 文件中写入数据框列表
【发布时间】:2020-05-07 16:41:19
【问题描述】:

制作数据框列表很容易:

d1 <- data.frame(y1 = c(1, 2, 3), y2 = c(4, 5, 6))
d2 <- data.frame(y1 = c(3, 2), y2 = c(6, 5))
my.list <- list(d1, d2)

我的问题是:我如何在excel 文件上写my.list,其工作表为d1d2

【问题讨论】:

    标签: r excel list dataframe


    【解决方案1】:

    openxlsx 中使用write.xlsx。它可以将多个数据框的列表作为输入,并将每个数据框转换为最终 excel 文件的单独工作表。

    library(openxlsx)
    write.xlsx(my.list, "foo.xlsx", sheetName = c("d1", "d2"))
    

    如果您的列表已命名,即names(my.list) 不是NULL,则可以忽略参数sheetName,默认将工作表名称设置为列表名称。

    【讨论】:

    • 这是最快的方法,当列表很大时消耗的内存更少。
    【解决方案2】:

    使用xlsx 包:

    library(xlsx)
    wb <- createWorkbook()
    sheet1 <- createSheet(wb,"d1") 
    sheet2 <- createSheet(wb,"d2")
    addDataFrame(my.list[[1]],
                     sheet=sheet1,
                     startRow=1,
                     row.names=FALSE)
    addDataFrame(my.list[[2]],
                     sheet=sheet2,
                     startRow=1,
                     row.names=FALSE)
    saveWorkbook(wb,file = "myXlsx.xlsx")
    
    

    通用方式:

    sheetNames<-c("d1","d2")
    library(xlsx)
    wb <- createWorkbook()
    for(i in 1:length(my.list)){
      sheetName<- createSheet(wb,sheetNames[i]) #add sheets to excel
      addDataFrame(my.list[[i]],
                   sheet=sheetName,
                   startRow=1,
                   row.names=FALSE)#assign dataframe to sheet
    }
    saveWorkbook(wb,file = "myXlsx1.xlsx")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      • 2016-12-03
      • 2019-05-10
      • 1970-01-01
      • 2016-02-16
      • 2015-06-28
      相关资源
      最近更新 更多