List of data.frame's to individual excel worksheets - R

穿精又带淫゛_ 提交于 2019-12-21 05:05:04

问题


I have a list of data.frame's that I would like to output to their own worksheets in excel. I can easily save a single data frame to it's own excel file but I'm not sure how to save multiple data frames to the their own worksheet within the same excel file.

library(xlsx)
write.xlsx(sortedTable[1], "c:/mydata.xlsx")

回答1:


Specify sheet name for each list element.

library(xlsx)
file <- paste("usarrests.xlsx", sep = "")
write.xlsx(USArrests, file, sheetName = "Sheet1") 
write.xlsx(USArrests, file, sheetName = "Sheet2", append = TRUE)

Second approach as suggested by @flodel, would be to use addDataFrame. This is more or less an example from the help page of the said function.

file <- paste("usarrests.xlsx", sep="")
wb <- createWorkbook()
sheet1 <- createSheet(wb, sheetName = "Sheet1")
sheet2 <- createSheet(wb, sheetName = "Sheet2")

addDataFrame(USArrests, sheet = sheet1)
addDataFrame(USArrests * 2, sheet = sheet2)
saveWorkbook(wb, file = file)

Assuming you have a list of data.frames and a list of sheet names, you can use them pair-wise.

wb <- createWorkbook()
datas <- list(USArrests, USArrests * 2)
sheetnames <- paste0("Sheet", seq_along(datas)) # or names(datas) if provided
sheets <- lapply(sheetnames, createSheet, wb = wb)
void <- Map(addDataFrame, datas, sheets)
saveWorkbook(wb, file = file)



回答2:


Here's the solution with openxlsx:

## create data;
dataframes <- split(iris, iris$Species)

# create workbook
wb <- createWorkbook()

#Iterate the same way as PavoDive, slightly different (creating an anonymous function inside Map())
Map(function(data, nameofsheet){     

    addWorksheet(wb, nameofsheet)
    writeData(wb, nameofsheet, data)

}, dataframes, names(dataframes))

## Save workbook to excel file 
saveWorkbook(wb, file = "file.xlsx", overwrite = TRUE)

.. however, openxlsx is also able to use it's function openxlsx::write.xlsx for this, so you can just give the object with your list of dataframes and the filepath, and openxlsx is smart enough to create the list as sheets within the xlsx-file. The code I post here with Map() is if you want to format the sheets in a specific way.




回答3:


lets say your list of data frames is called Lst and that the workbook you want to save to is called wb.xlsx. Then you can use:

library(xlsx)
counter <- 1
for (i in length(Lst)){
   write.xlsx(x=Lst[[i]],file="wb.xlsx",sheetName=paste("sheet",counter,sep=""),append=T)
   counter <- counter + 1
}

G



来源:https://stackoverflow.com/questions/27524472/list-of-data-frames-to-individual-excel-worksheets-r

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!