我尝试使用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文件提供了一个很好的界面,只需要最少的设置。我也对其他好的选择持开放态度。
答案 0 :(得分:11)
首先创建Excel文件:
wb <- createWorkbook()
saveWorkbook(wb, 'output.xlsx')
然后附加每个工作簿:
lapply(names(myList), function(x) write.xlsx(myList[[x]], 'output.xlsx', sheetName=x, append=TRUE))
答案 1 :(得分:3)
在append = TRUE
的调用中使用write.xlsx
。