【问题标题】:Write a list of named data.frames to an xlsx file将命名 data.frames 的列表写入 xlsx 文件
【发布时间】:2011-10-25 15:20:25
【问题描述】:

我尝试使用 xlsx 包将命名数据框列表保存到 xlsx 文件中。列表中的数据框都已命名,但如果它也适用于列表中未命名的元素,那就太好了。

这是我写的函数:

toXLS <- function(myList,myFile) {

    #Initialize output workbook
    require(xlsx)
    wb <- createWorkbook()
    for (name in names(myList)) {
        createSheet(wb, sheetName=name)
    }
    
    #Write blank workbook to file
    saveWorkbook(wb, myFile)

    #Write output data to saved workbook
    for (name in names(myList)) {
        write.xlsx(myList[[name]], myFile, sheetName=name)
    }
}

myList <- list(a=data.frame(1,2,3),b=data.frame('a','b','c'),d=data.frame('01-01-1900'))
toXLS(myList,paste(getwd(),'/output.xlsx',sep=''))

它工作正常,但每次我调用write.xlsx 时都会覆盖输出工作簿。如何将 data.frame 作为工作表插入到工作簿中?

我没有使用 xlsx 包,但它似乎为 excel 文件提供了一个很好的界面,并且所需的设置最少。我也愿意接受其他不错的选择。

【问题讨论】:

    标签: r io xls xlsx rjava


    【解决方案1】:

    首先创建Excel文件:

    wb <- createWorkbook()
    saveWorkbook(wb, 'output.xlsx')
    

    然后附加每个工作簿:

    lapply(names(myList), function(x) write.xlsx(myList[[x]], 'output.xlsx', sheetName=x, append=TRUE))
    

    【讨论】:

      【解决方案2】:

      在对write.xlsx 的调用中使用append = TRUE

      【讨论】:

      • 我如何覆盖现有文件,然后将命名的工作表附加到它?
      • 当我运行上面的代码,更改append = TRUE,我得到以下错误Error in .jcall(wb, "Lorg/apache/poi/ss/usermodel/Sheet;", "createSheet", : java.lang.IllegalArgumentException: The workbook already contains a sheet of this name
      猜你喜欢
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多